查找不同类型的两个列表之间的差异



我想得到C#中不同类型的两个大数组之间的差异。性能和优化是一个重要的方面,因为我必须比较大型元素阵列。

我必须能够从一个列表中获得与另一个列表相关的缺失元素,以及存在但不同的元素。

目标是从REST API提供的外部数据中同步数据库中的数据。我在服务器上使用EF Core,它为我提供了TLocal[],而REST API为我提供TRemote[]。由于这是一个定期从API检索的大数据,我希望避免将TRemote转换为TLocal来比较这两个列表。我有一个ID property,这两种类型都通用,可以进行比较。

一些考虑过的可能性:

  • HashSet:两个列表必须属于同一类型才能使用Except/Intersect。我想保留两种不同的类型
  • Join-Linq:这允许使用两个不同类型的列表,但有性能成本。此外,我必须执行两个Join来获得两个列表之间的差异(添加/删除(
  • IEqualityComparer:使用Except/Intercept和自定义EqualityComparer来比较两个对象

还有其他选择吗?

如果您寻求性能,请避免使用LINQ(请阅读本文(。

我建议保留本地数据的Dictionary<(type of id), TLocal>,以便有效地O(1(确定是否需要插入或更新远程对象。

相关内容

  • 没有找到相关文章

最新更新