Linq를 사용하여 두 개체 목록에서 목록 만들기
다음 시나리오를 고려하세요.
class Person { string Name; int Value; int Change; } List<Person> list1; List<Person> list2;
목표는 다음과 같습니다. 두 목록을 새로운 List
해결책:
Linq 메서드 Union은 이 작업에 완벽하게 적합합니다.
var mergedList = list1.Union(list2).ToList();
이것은 작업은 두 목록을 병합하여 중복 항목을 제거합니다. 기본적으로 Person 클래스 내에 정의된 Equals 및 GetHashCode 메서드를 호출합니다. 그러나 이러한 메서드를 재정의하지 않으면 사용자 정의 개체를 효과적으로 비교하지 못할 수 있습니다(예: 비교를 위해 Name 속성 사용).
Equals 및 GetHashCode 재정의:
이름별로 정확한 비교를 보장하려면 다음과 같이 메서드를 재정의하세요. 다음은 다음과 같습니다.
public override bool Equals(object obj) { var person = obj as Person; return Equals(person); } public override int GetHashCode() { return Name.GetHashCode(); } public bool Equals(Person personToCompareTo) { if (personToCompareTo == null || string.IsNullOrEmpty(personToCompareTo.Name)) return false; return Name.Equals(personToCompareTo.Name); }
사용자 지정 비교자:
또는 IEqualityComparer 인터페이스를 구현하는 사용자 지정 비교자를 만듭니다. 이 비교자는 Union 메서드에 대한 두 번째 인수로 제공될 수 있습니다. 사용자 정의 비교기에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/system.collections.iequalitycomparer.aspx에서 확인할 수 있습니다.
위 내용은 LINQ를 사용하여 두 개의 개인 개체 목록을 병합하고 이름 일치를 기반으로 특성 업데이트를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!