여러 개체 목록을 처리할 때 이들을 응집력 있는 단위로 결합해야 하는 경우가 종종 있습니다. . 이 시나리오에서는 두 개의 Person 개체 목록이 있고 이를 병합하여 중복이 존재하는 경우 해당 값 간의 차이로 Change 값을 계산하려고 합니다.
이를 달성하기 위해 LINQ는 강력한 확장 방법인 Union을 제공합니다. . 기본적으로 이 메서드는 Person 클래스에 정의된 Equals 및 GetHashCode 메서드를 기반으로 중복 항목을 제거합니다. Person 클래스에 이러한 메서드가 재정의되지 않았거나 사용자 지정 비교를 수행하려는 경우 방법은 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!