こんばんは、
2つのデータテーブル(最後の読み取りと書き込みが必要なデータ)を比較し、変更された行のみを取得する一種のキャッシュを構築しています。DataRowComparer.DefaultをEqualityComparerとして使用していますが、多くのフィールドを持つ行を比較する目的が間違っています。
短いテキスト値を持つ3列のテーブルでは完全に機能しますが、長いテキストの説明を比較すると、1つの文字を変更してもテーブル全体を返すことができません。
コードは非常に単純です。
var diffDs = ds.Tables[0].AsEnumerable().Except(cachedTable.AsEnumerable(), DataRowComparer.Default);
アイデア?ありがとう!
更新: 手動デバッグds.Tables [0] .AsEnumerable()行とcachedtable.AsEnumerable()行を比較できました:DataRowComparerを除いて、完全に同じですが異なります。フォーマットの違いを回避しようとして、DateTime列を削除しましたが成功しませんでした。交差点も機能しません。
更新2: 空/ヌルフィールドでは機能しないことを除いて。IEqualityComparerでは異なるようです。