将两个数据表不同的columnName连接到一个数据表中

时间:2017-11-14 15:53:49

标签: c# datatable

我需要帮助:如何在C#中连接两个数据表,其中列名不同,不是合并,只是向右或向左连接,只需从dtA获取dtResult与dtB连接,如下所示:

i

1 个答案:

答案 0 :(得分:0)

如果您的意思是按索引加入,则更多的是两个DataTables的压缩。您可以使用此方法:

public static DataTable MergeTablesByIndex(DataTable t1, DataTable t2)
{
    if (t1 == null || t2 == null) throw new ArgumentNullException("t1 or t2", "Both tables must not be null");

    DataTable t3 = t1.Clone();  // first add columns from table1
    foreach (DataColumn col in t2.Columns)
    {
        string newColumnName = col.ColumnName;
        int colNum = 1;
        while (t3.Columns.Contains(newColumnName))
        {
            newColumnName = string.Format("{0}_{1}", col.ColumnName, ++colNum);
        }
        t3.Columns.Add(newColumnName, col.DataType);
    }
    var mergedRows = t1.AsEnumerable().Zip(t2.AsEnumerable(),
        (r1, r2) => r1.ItemArray.Concat(r2.ItemArray).ToArray());
    foreach (object[] rowFields in mergedRows)
        t3.Rows.Add(rowFields);

    return t3;
}

我没有从头开始写这个,它是older answer of me的第二部分。