2011-04-15 66 views
0

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

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

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

+0

什么使对象相同。他们是否需要成为内存中的同一个对象,还是需要内容? – Jodrell 2011-04-15 09:01:58

+0

您是否定义了列表中的对象类? – Jodrell 2011-04-15 09:05:21

+0

对不起,内容。实际的对象会有所不同,但内容将完全相同 – Chris 2011-04-15 09:17:19

回答

1

我不清楚问题到底是什么。

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

如果要检查两个集合是否包含完全相同的元素,那么两个差集(old.Except(new)new.Except(old))的大小应该都为零。 (意思是没有元素被添加&没有元素被删除)。