C# 合并同一数据表中的行

C# 合并同一数据表中的行,c#,datatable,C#,Datatable,我想把两行合并成一行。它们都在同一个数据库和表中 例如: column1 column2 column3 column4 column5 column6 row1 value value value null null null row2 null null null value value value 我试着使用table.M

我想把两行合并成一行。它们都在同一个数据库和表中

例如:

        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

没有内置函数为您执行此操作。因此,您必须手动执行此操作。首先确定要合并的行,然后遍历列以合并它们

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);
DataRow target=table.Rows[0];
DataRow source=table.Rows[1];
for(int i=0;i

上面的示例迭代两行的所有列,并从target为null的源分配值。合并后,它将删除源行。

假设同一数据表中有两个数据行
dr1
dr2
,则直接使用
Linq

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

如何定义要“合并”的行,以及如何定义结果行的每列的值?没有内置的函数可以为您实现这一点,您需要为它定义逻辑。如果这是您所要求的,那么就没有现成的功能。你需要手动操作。我想对每一列使用
sum
就可以了,但我从未尝试过用
value
null
求和,谢谢!我最终使用了Kami的解决方案,因为它是最先发布的,但我很欣赏Linq版本