2011-10-15 2 views
6

Ho due DataTable come segueUnione di due DataTable in C#

Table1 
-------------------------------- 
Id  | Batch | Qty 
----------------------------- 
1   A1  5 
2   A2  5 
3   A3  5 
4   A4  5 


Table2 
-------------------------------- 
Id  | Batch | Qty 
----------------------------- 
1   A1  6 
2   A2  6 
3   A3  6 
5   A5  10 

Expected result 
-------------------------------- 
Id  | Batch | Qty 
----------------------------- 
1   A1  6 (Qty updated) 
2   A2  6 (Qty updated) 
3   A3  6 (Qty updated) 
4   A4  5 (remains as same) 
5   A5  10 (row in table 2) 

Come posso raggiungere questo obiettivo in C#. Se qualcuno sa questa operazione tabella di dati si prega di condividere ..

+0

Se c'è un ID di corrispondenza e batch in entrambe le tabelle, vuoi il valore più alto della quantità, o semplicemente il valore della tabella 2? – Tim

+0

@Tim: si desidera aggiornare il valore da tabella2 – Nithesh

+0

Quale versione di C#? Stai usando 'DataTable' come nella classe' DataTable'? Stai usando la versione generica? (come in Typed DataSet/DataTable)? – xanatos

risposta

5

provare qualcosa di simile, questo è un esempio di come unire due DataTable ...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using System.Data; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
      DataColumn col; 
      DataTable table1 = new DataTable(); 
      table1.PrimaryKey = new DataColumn[] { 
      col = table1.Columns.Add("slot_id") 
      }; 
      col.DataType = typeof(int); 
      col.Unique = true; 
      col = table1.Columns.Add("appointment_time"); 
      col = table1.Columns.Add("patient_name"); 
      col = table1.Columns.Add("patient_doctor"); 

      table1.Rows.Add(1, "0900", "George Michael"); 

      DataTable table2 = new DataTable(); 
      table2.PrimaryKey = new DataColumn[] { 
      col = table2.Columns.Add("slot_id") 
      }; 
      col.DataType = typeof(int); 
      col.Unique = true; 
     col = table2.Columns.Add("appointment_time"); 

      table2.Rows.Add(1, "0900"); 
      table2.Rows.Add(2, "1000"); 
      table2.Rows.Add(3, "1100"); 
      table2.Rows.Add(4, "1200"); 

     DataTable merged = new DataTable(); 
     merged.Merge(table1); 
     merged.Merge(table2); 

     foreach (DataColumn dc in merged.Columns) 
     Console.Write(dc.ColumnName + "\t"); 
     Console.WriteLine(); 

     foreach (DataRow dr in merged.Rows) 
     { 
      foreach (DataColumn dc in merged.Columns) 
      Console.Write(dr[dc.ColumnName] + "\t"); 
      Console.WriteLine(); 
     } 
     Console.WriteLine(); 

     Console.Write("Press any key to continue . . . "); 
     Console.ReadKey(true); 
     Console.WriteLine(); 
    } 
    } 
} 
+0

Grazie errorstacks questo è quello che sto cercando – Nithesh

+0

siete i benvenuti ...... –