我建立了一種高速緩存比較兩個數據表(最後一次讀取和一個我需要寫)和僅檢索修改的行失敗。 我使用DataRowComparer.Default作爲Equality Comparer,但它有錯誤的目標比較行與許多領域。
它可以很好地處理帶有短文本值的3列表格,但是比較長文本描述時,即使我更改了單個字符,也無法返回整個表格。
的代碼非常簡單:
var diffDs = ds.Tables[0].AsEnumerable().Except(cachedTable.AsEnumerable(), DataRowComparer.Default);
想法? 謝謝!
更新: 手動調試,我能夠比較ds.Tables [0] .AsEnumerable()行VS cachedtable.AsEnumerable()行:絕對等於爲DataRowComparer除,但不同的。我已經刪除了任何試圖避免格式差異而沒有成功的日期時間列。 相交不起作用。
更新2: 除空/空字段不起作用。它們對於IEqualityComparer似乎不同。
您能否將您的解決方案轉換爲答案並將其標記爲已接受(可能在兩天後)? – 2012-08-08 23:06:47
將我的解決方案轉換爲答案並標記! – 2012-08-09 08:05:16