在C#中比较来自不同来源的2个列表

时间:2011-04-15 08:46:16

标签: c# linq

我的程序是一个同步程序,每2分钟同步一次从源A到源B的数据 - 现在它无论如何都会添加新行,但显然这对于​​生产环境来说并不理想,所以我希望能够检查到查看源A中的行是否与源B中的行相同(来自最近的同步)。如果是,请不要执行此同步。

所以我已经定义了一个结构,其中包含存储的所有字段(除了任何PK字段之间的源不匹配),以及执行同步时,而不是直接同步到源B,我创建了一个结构列表并将结果放在那里。然后我创建一个该结构列表的新实例,并将源B中的最新同步结果放在那里。

所以从理论上讲,如果自上次同步以来没有任何改变,那么除了顺序之外,2个列表应该是相同的。但是我如何比较这两个列表呢?

1 个答案:

答案 0 :(得分:1)

我不清楚究竟是什么问题。

但是,如果您需要使用列表而不管订单如何,您可以使用Enumerable中基于集合的操作。如果您有集合oldnew,则可以获取新集合中的元素列表,但不能使用new.Except(old)获取原始集合中的元素列表(请参阅MSDN documentation for Except

如果要检查两个集合是否包含完全相同的元素,则两个差集(old.Except(new)new.Except(old))的大小应均为零。 (意思是没有添加任何元素,也没有删除任何元素)。