> 백엔드 개발 > C++ > LINQ의 통합 메서드는 어떻게 두 개체 목록을 결합하고 중복 항목을 처리할 수 있습니까?

LINQ의 통합 메서드는 어떻게 두 개체 목록을 결합하고 중복 항목을 처리할 수 있습니까?

Linda Hamilton
풀어 주다: 2025-01-04 16:42:40
원래의
752명이 탐색했습니다.

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의 통합 메서드는 어떻게 두 개체 목록을 결합하고 중복 항목을 처리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿