晚上好,
我正在构建一种缓存,比较两个数据表(最后一个读取和我需要写入的那个)并仅检索修改过的行。我使用 DataRowComparer.Default 作为平等比较器,但它的目标是错误的比较行与许多字段。
它与具有短文本值的 3 列表格完美配合,但比较长文本描述时,即使我更改单个字符,它也无法返回整个表格。
代码非常简单:
var diffDs = ds.Tables[0].AsEnumerable().Except(cachedTable.AsEnumerable(), DataRowComparer.Default);
想法?谢谢!
更新: 手动调试我能够比较 ds.Tables[0].AsEnumerable() 行与 cachedtable.AsEnumerable() 行:绝对等于但 DataRowComparer 除外。我删除了任何 DateTime 列,试图避免格式差异而没有成功。交叉点也不行。
更新 2: 除了不适用于空/空字段。对于 IEqualityComparer,它们似乎有所不同。