合并同一DataTable中的行

时间:2013-10-07 16:44:42

标签: c# datatable

我正在尝试将两行合并为一行。它们都在同一个数据库和表中。

示例:

        column1    column2    column3    column4    column5    column6
row1    value      value      value      null       null       null
row2    null       null       null       value      value      value

我尝试使用table.Merge(table),但似乎没有做任何事情。如何合并这两行,以便它只是

        column1    column2    column3    column4    column5    column6
row1    value      value      value      value      value      value

2 个答案:

答案 0 :(得分:1)

没有内置功能为您执行此操作。因此,您必须手动执行此操作。首先确定要合并的行,然后在列上运行以合并它们。

DataRow target = table.Rows[0];
DataRow source = table.Rows[1];

for (int i = 0; i < table.Columns.Count; i++)
{
    target[i] = target[i] ?? source[i];
}

table.Remove(source);

上面的示例遍历两行的所有列,并从源中指定目标为空的值。合并后,它将删除源行。

答案 1 :(得分:1)

假设您有两个来自同一个DataTable的DataRows dr1dr2,那么使用Linq就可以直接使用:

var merged = dr1.ItemArray.Zip(dr2.ItemArray, (e1, e2) =>e1 ?? e2).ToArray();    
dr1.ItemArray = merged;