2013-10-07 47 views
0

我試圖將兩行合併到一行中。他們都在同一個數據庫和表格中。在同一個DataTable中合併行

例子:

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

我嘗試使用table.Merge(表),但似乎並沒有做任何事情。我怎麼能合併這兩行,以便它只是

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

你是如何定義的行會「合併,」和你怎麼定義它的值每列產生的行將有?沒有內置函數可以爲你做這件事,你需要爲它定義邏輯。 – David

+0

如果這就是你所要求的,那就沒有什麼可以使用的了。你需要手動完成。 –

+0

我認爲每列使用'sum'會做的伎倆,但我從來沒有試圖與'價值'sum' null' –

回答

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

上面的示例遍歷兩行的所有列並從目標爲null的源中分配值。合併後,它將刪除源行。

+0

謝謝,這工作完美 – zoite

1

假設你有兩個數據行dr1和相同的DataTable dr2,它是用Linq直接:

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

謝謝!我最終使用Kami的解決方案,因爲它首先發布,但我很欣賞Linq版本 – zoite