Home
Manage Your Code
Snippet: Merge Different Datatable in one (C#)
Title: Merge Different Datatable in one Language: C#
Description: This code allows to merge two different datatable into one datatable with the common Id field Views: 268
Author: Pragnesh Patel Date Added: 6/27/2008
Copy Code  
1  public DataTable MergeTables(DataTable dtFirst, DataTable dtSecond, string CommonColumn)
2                {
3                    DataTable dtResults = dtFirst.Clone();
4                    int count=0;
5                    for (int i = 0; i < dtSecond.Columns.Count; i++)
6                        {
7                    if (!dtFirst.Columns.Contains(dtSecond.Columns[i].ColumnName))
8                        {
9                            dtResults.Columns.Add(dtSecond.Columns[i].ColumnName, dtSecond.Columns[i].DataType);
10                            count++;
11                            }
12                        }
13
14                    DataColumn []columns = new DataColumn[count];
15                    int j = 0;
16                    for (int i = 0; i < dtSecond.Columns.Count; i++)
17                    {
18                    if (!dtFirst.Columns.Contains(dtSecond.Columns[i].ColumnName))
19                    {
20                    columns[j++] = new DataColumn(dtSecond.Columns[i].ColumnName, dtSecond.Columns[i].DataType);
21                    }
22                    }
23
24                        dtResults.BeginLoadData();
25                        foreach(DataRow dr in dtFirst.Rows)
26                        {
27                        dtResults.Rows.Add(dr.ItemArray);
28                        }
29                            foreach(DataRow dr in dtSecond.Rows)
30                            {
31                                foreach(DataRow dr1 in dtResults.Rows)
32                                {
33                                    if(dr1[CommonColumn].ToString().Equals(dr[CommonColumn].ToString()))
34                                    {
35                                        foreach(DataColumn c in columns)
36                                        {
37                                        dr1[c.ColumnName] = dr[c.ColumnName];
38                                        }
39                                    }
40                                }
41                            }
42                dtResults.EndLoadData();
43                return dtResults;
44            }