LINQ를 사용하여 목록의 고유 요소 확인
한 목록에만 존재하고 다른 목록에는 존재하지 않는 요소를 식별해야 합니다. LINQ는 이러한 과제에 대한 깔끔한 솔루션을 제공합니다.
다음 코드 조각을 고려하세요.
<code class="language-csharp">class Program { static void Main(string[] args) { // 初始化两个Person对象列表。 List<Person> peopleList1 = new List<Person>(); peopleList1.Add(new Person() { ID = 1 }); peopleList1.Add(new Person() { ID = 2 }); peopleList1.Add(new Person() { ID = 3 }); List<Person> peopleList2 = new List<Person>(); peopleList2.Add(new Person() { ID = 1 }); peopleList2.Add(new Person() { ID = 2 }); peopleList2.Add(new Person() { ID = 3 }); peopleList2.Add(new Person() { ID = 4 }); peopleList2.Add(new Person() { ID = 5 }); } } class Person { public int ID { get; set; } }</code>
peopleList2의 어떤 사람이 peopleList1에 존재하지 않는지 확인하려고 한다고 가정해 보겠습니다. 이를 위해 LINQ의 Where() 메서드를 사용할 수 있습니다.
한 가지 방법은 Any() 메서드를 사용하는 것입니다.
<code class="language-csharp">var result = peopleList2.Where(p => !peopleList1.Any(p2 => p2.ID == p.ID));</code>
이 쿼리는 peopleList2의 각 사람을 확인하여 peopleList1에 동일한 ID를 가진 사람이 있는지 확인합니다. 일치하는 항목이 없으면 해당 사람이 결과에 포함됩니다.
또는 동일한 논리를 보다 간결하게 표현하는 방법은 다음과 같습니다.
<code class="language-csharp">var result = peopleList2.Where(p => peopleList1.All(p2 => p2.ID != p.ID));</code>
이 경우 All()은 peopleList1에 있는 모든 사람의 ID가 peopleList2에 있는 현재 사람의 ID와 다른지 확인합니다. 이 조건이 true이면 그 사람이 결과에 포함됩니다.
참고: 두 방법 모두 O(n*m) 작업을 수행하므로 대규모 데이터 세트에서 성능 문제가 발생할 수 있다는 점에 유의하는 것이 중요합니다. 성능을 최적화하려면 추가 방법이 필요할 수 있습니다. 제공된 LINQ 구문은 문제에 대한 간단한 솔루션을 제공하지만 항상 프로젝트의 성능 요구 사항을 기반으로 평가하는 것이 좋습니다.
위 내용은 LINQ는 여러 목록 중 하나의 목록에 고유한 요소를 어떻게 효율적으로 식별할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!