Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Merging two DataTables in C#

I Have two datatables as follows

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)

How can i achieve this in c#. If anybody knows this data table operation please share..

like image 670
Nithesh Narayanan Avatar asked Oct 15 '11 05:10

Nithesh Narayanan


People also ask

How to merge DataTables?

The Merge method is used to merge two DataTable objects that have largely similar schemas. A merge is typically used on a client application to incorporate the latest changes from a data source into an existing DataTable.


1 Answers

try something like this, this is an example how to merge two datatables...

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(); 
    } 
  } 
} 
like image 178
Glory Raj Avatar answered Oct 23 '22 22:10

Glory Raj