私はこれらの2つのデータテーブルを持っており、それらの違いを知りたいと思います。次に例を示します。2つのデータテーブルの違いを取得する方法
Table1
-------------------------
ID | Name
--------------------------
1 | A
2 | B
3 | C
--------------------------
Table2
-------------------------
ID | Name
--------------------------
1 | A
2 | B
--------------------------
私はちょうど結果は表1にしていないtable2の中にあるデータ(TABLE1-table2の)
ResultTable
-------------------------
ID | Name
--------------------------
3 | C
--------------------------
として、私は、LINQのを経由してこれらの2つの同様のソリューションを使用しようとしたたい常に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
@ Tormodですが、最初の解決策では 'DataRowComparer'の使用は何ですか?実際の列の値を比較するために 'public bool Equals(TRow leftRow、TRow rightRow) 'をオーバーライドします。 – hometoast
データテーブルをどのように取得しているかを表示できますか?データが期待どおりに異なる可能性はありますか?私はLINQPadで簡単なサンプルを行い、最初の解決策はうまくいくようです。 – goric