我建立了一种高速缓存比较两个数据表(最后一次读取和一个我需要写)和仅检索修改的行失败。 我使用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