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 }