我有這兩個數據表,我想獲得它們之間的區別。這裏有一個例子:如何獲得兩個數據表之間的差異
Table1
-------------------------
ID | Name
--------------------------
1 | A
2 | B
3 | C
--------------------------
Table2
-------------------------
ID | Name
--------------------------
1 | A
2 | B
--------------------------
我只是想要的結果的數據是在表1,而不是在表2(表1,表2)
ResultTable
-------------------------
ID | Name
--------------------------
3 | C
--------------------------
我試圖通過LINQ到使用這兩個類似的解決方案,但它總是返回table1而不是table1-table2。這是第一個解決方案:
DataTable table1= ds.Tables["table1"];
DataTable table2= ds.Tables["table2"];
var diff= table1.AsEnumerable().Except(table2.AsEnumerable(),DataRowComparer.Default);
解決方法二:
var dtOne = table1.AsEnumerable();
var dtTwo = table2.AsEnumerable();
var difference = dtOne.Except(dtTwo);
那麼,哪裏是錯?非常感謝您的答覆。 :)
除了檢查是否它們是相同的實例。他們各自的屬性並不相同。您可以使用接受EqualityComparer的重載,或者您可以研究在各種LINQ +庫中實現的擴展方法ExceptBy(),以及Jon Skeets MoreLinq(http://code.google.com/p/morelinq/) – Tormod 2013-02-21 12:52:35
@ Tormod,但在他的第一個解決方案中,DataRowComparer的用途是什麼?它覆蓋'公共bool Equals(TRow leftRow,TRow rightRow)'來比較實際的列值。 – hometoast 2013-02-21 13:05:50
你能展示你如何檢索你的數據表?數據可能與預期的不同嗎?我在LINQPad中做了一個快速示例,你的第一個解決方案似乎工作正常。 – goric 2013-02-21 13:13:07