比较c#中来自不同来源的两个列表

本文关键字:两个 列表 比较 | 更新日期: 2023-09-27 17:50:11

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

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

所以从理论上讲,如果上次同步之后没有任何变化,那么这两个列表应该是相同的,只是顺序不同。但我该如何比较这两个列表呢?

比较c#中来自不同来源的两个列表

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

但是,如果您需要处理列表而不考虑顺序,则可以使用Enumerable中基于集合的操作。如果您有集合oldnew,您可以获得新集合中的元素列表,而不是使用new.Except(old)的原始集合中的元素列表(参见MSDN文档中的Except)。

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