我已经搜索了互联网以尝试找到解决方案,也许我没有以正确的方式解决这个问题。
我需要比较两个结构相同的数据集,并希望找到新的和更改的对象(使用 LINQ)。
使用我在CodeProject找到的内容,我能够汇总一个已更改的项目列表,但这是通过对每一列(并且会有很多列)进行硬编码并检查相同的值来完成的:
var updRec = from u in updated
join o in orig
on u.KeyValue equals o.KeyValue
where
(o.Propery1 != u.Propery1) ||
(o.Propery2 != u.Propery2)
select new record
{
KeyValue = u.KeyValue,
Propery1 = u.Propery1,
Propery2 = u.Propery2 ,
RecordType = "mod" // Modified
};
我可以在两件事上使用帮助:
- 是否有更有效的方法来遍历每一列,因为我计划添加更多需要比较的属性?必须有更好的方法来动态检查 2 个相同的数据集是否有变化。
- 如何查看哪些属性已更改?例如,为所有不相同的项目创建一个“属性、原始值、更新值”列表?
希望这能很好地解释它。如果我没有正确看待它,请随时向我指出处理这种情况的其他方法。