首页 >后端开发 >C++ >LINQ 的 Union 方法如何组合两个对象列表并处理重复项?

LINQ 的 Union 方法如何组合两个对象列表并处理重复项?

Linda Hamilton
Linda Hamilton原创
2025-01-04 16:42:40752浏览

How Can LINQ's Union Method Combine Two Lists of Objects and Handle Duplicates?

使用 LINQ 组合两个对象列表

处理多个对象列表时,经常需要将它们组合成一个内聚单元。在这种情况下,您有两个 Person 对象列表,并希望合并它们,如果存在重复项,则计算 Change 值作为它们各自值之间的差异。

为了实现此目的,LINQ 提供了一个强大的扩展方法:Union 。默认情况下,此方法根据 Person 类中定义的 Equals 和 GetHashCode 方法删除重复项。如果您的 Person 类没有重写这些方法或者您想要执行自定义比较,请按以下方法操作:

重写 Equals 和 GetHashCode

在您的 Person 中类,重写 Equals 和 GetHashCode 方法以根据所需属性比较对象,例如名称:

public override bool Equals(object obj)
{
    // Convert object to a Person for comparison
    var person = obj as Person;

    if (person == null) return false;

    return Equals(person);
}

public override int GetHashCode()
{
    return Name.GetHashCode();
}

public bool Equals(Person personToCompareTo)
{
    if (personToCompareTo == null) return false;

    if (string.IsNullOrEmpty(personToCompareTo.Name)) return false;

    return Name.Equals(personToCompareTo.Name);
}

使用比较器类

实现一个实现 IEqualityComparer 接口的比较器类。提供此比较器作为 Linq Union 扩展方法中的第二个参数:

// Implement IEqualityComparer<Person>
public bool Equals(Person x, Person y)
{
    // Your custom comparison here
}

public int GetHashCode(Person person)
{
    // Your custom hash code generation here
}

var mergedList = list1.Union(list2, new MyPersonComparer());

以上是LINQ 的 Union 方法如何组合两个对象列表并处理重复项?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn