Lets you have two datatables having two same columns. This code is useful to merge the columns.

   1: public static 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:    }