【发布时间】:2020-02-20 05:59:28
【问题描述】:
考虑类型对象的两个列表(或其他适当的数据结构):
class Object
{
public string clause;
public string preamble;
public string description;
}
我需要为这些不完全匹配的对象建立一个列表(preamble 和 description 在两者中完全相同)。例如,如果列表 A 中有一条记录,其 preamble 与列表 B 中的一条记录匹配,但它们的 description 不匹配,则应包含该记录。如果他们的description 匹配,则不应包括他们(这将是他们交集的一部分)。
我一直在寻找解决方案,包括实现嵌套的foreach 循环。 List 或任何其他适当的数据结构是否有对称差分函数可以通过像这样比较对象的成员来比较对象?
就上下文而言,其中一个列表表示使用 Epplus 库获得的 Excel 电子表格中的记录,另一个列表表示来自 Jira API 的问题。
【问题讨论】:
-
您需要为您的类型创建一个适当的
IEqualityComparer<T>(我希望您没有称为Object)来考虑具有相同序言和描述的对象平等。之后,HashSet<T>.SymmetricExceptWith是你的朋友——如果你不想使用它,你可以使用a.Except(b, comparer).Concat(b.Except(a, comparer))。
标签: c# .net list data-structures symmetric-difference