0

2 つの行を 1 つの行にマージしようとしています。それらは両方とも同じデータベースとテーブルにあります。

例:

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

table.Merge(table) を使用してみましたが、何もしていないようです。これらの 2 つの行をマージするにはどうすればよいですか?

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

2 に答える 2

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);

上記のサンプルは、2 つの行のすべての列を反復処理し、ターゲットが null であるソースから値を割り当てます。マージ後、ソース行が削除されます。

于 2013-10-07T16:54:11.633 に答える
1

2 つの DataRows がdr1ありdr2、同じ DataTable からのものであると仮定すると、以下を使用すると簡単ですLinq

var merged = dr1.ItemArray.Zip(dr2.ItemArray, (e1, e2) =>e1 ?? e2).ToArray();    
dr1.ItemArray = merged;
于 2013-10-07T16:55:24.990 に答える