>백엔드 개발 >C++ >LINQ는 다른 목록에는 없는 한 목록의 고유 항목을 어떻게 효율적으로 식별할 수 있습니까?

LINQ는 다른 목록에는 없는 한 목록의 고유 항목을 어떻게 효율적으로 식별할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-19 18:46:14713검색

How Can LINQ Efficiently Identify Unique Items in One List That Are Absent from Another?

LINQ를 사용하여 고유 항목을 효율적으로 식별

LINQ(Language Integrated Query)는 간결하고 효율적인 방식으로 데이터를 쿼리하기 위한 다양한 도구 세트를 제공합니다. 일반적인 시나리오에는 한 목록에는 있지만 다른 목록에는 없는 항목을 식별하는 작업이 포함됩니다.

다음 코드 조각을 고려하세요.

<code class="language-csharp">class Program
{
    static void Main(string[] args)
    {
        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>

문제 설명: peopleList1과 peopleList2라는 두 개의 목록이 주어지면 peopleList2에는 존재하지만 peopleList1에는 존재하지 않는 고유한 사람을 확인하는 LINQ 쿼리를 작성합니다. 이 예에서 원하는 결과는 ID 4와 ID 5를 가진 사람입니다.

LINQ 솔루션: 다음 LINQ 쿼리는 이 문제를 효과적으로 해결합니다.

<code class="language-csharp">var result = peopleList2.Where(p => !peopleList1.Any(p2 => p2.ID == p.ID));</code>

이 쿼리는 지정된 기준에 따라 peopleList2의 항목을 필터링하는 Where() 메서드를 사용합니다. 이 경우 조건은 peopleList1의 항목에 peopleList2의 현재 항목과 일치하는 ID가 있는지 확인합니다. 찾을 수 없는 경우(!peopleList1.Any() == true) 항목이 결과 집합에 포함됩니다.

다른 표현: 또는 쿼리를 다음과 같이 표현할 수도 있습니다.

<code class="language-csharp">var result = peopleList2.Where(p => peopleList1.All(p2 => p2.ID != p.ID));</code>

이 변형은 All() 메서드를 사용하여 peopleList1의 모든 항목이 peopleList2의 현재 항목과 다른 ID를 가지고 있는지 평가합니다. 이 조건이 true(peopleList1.All() == true)이면 해당 항목이 결과 집합에 포함됩니다.

참고: 두 방법의 계산 복잡도는 O(n*m)입니다. 여기서 n은 peopleList1의 항목 수를 나타내고 m은 peopleList2의 항목 수를 나타냅니다. 이는 대규모 데이터 세트의 경우 이 작업이 느릴 수 있음을 의미합니다. 성능이 문제인 경우 해시 테이블이나 집합 작업과 같은 다른 방법을 고려하세요.

위 내용은 LINQ는 다른 목록에는 없는 한 목록의 고유 항목을 어떻게 효율적으로 식별할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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