我想弄清C#
中两个不同类型的大型数组之间的区别。性能和优化是重要的一点,因为我必须比较大型的元素数组。
我必须能够从一个列表中获得与另一个列表相关的缺失元素,以及存在但不同的元素。
目标是从REST API
提供的外部数据中同步数据库中的数据。我在服务器上使用EF Core
,这为我提供了TLocal[]
,而REST API
为我提供了TRemote[]
。由于这是定期从API检索的大数据,因此我想避免将TRemote
转换为TLocal
来比较两个列表。我有两种类型共有的ID property
,可以进行比较。
一些考虑的可能性:
HashSet
:两个列表都必须具有相同的类型才能使用Except/Intersect
。我想保留两种不同的类型。Join-Linq
:这允许使用两个不同类型的列表,但会降低性能。此外,我必须执行两个Join才能获得两个列表之间的差异(添加/删除)。IEqualityComparer
:将Except/Intercept
与自定义EqualityComparer
结合使用来比较两个对象。还有其他选择吗?