>백엔드 개발 >C++ >LINQ는 여러 목록 중 하나의 목록에 고유한 요소를 어떻게 효율적으로 식별할 수 있습니까?

LINQ는 여러 목록 중 하나의 목록에 고유한 요소를 어떻게 효율적으로 식별할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-19 18:32:10843검색

How Can LINQ Efficiently Identify Elements Unique to One List Among Multiple Lists?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.