LINQ 쿼리를 사용하여 목록의 항목 필터링
LINQ는 항목이 다른 목록에 있는지 여부에 따라 목록의 항목을 필터링하는 효율적인 방법을 제공합니다. 아래 코드 예시를 참조하세요.
<code class="language-csharp">class Program { static void Main(string[] args) { // 示例数据 List<Person> peopleList1 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 } }; List<Person> peopleList2 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 }, new Person() { ID = 4 }, new Person() { ID = 5 } }; } } class Person { public int ID { get; set; } }</code>
peopleList1에 없는 항목을 peopleList2에서 찾아야 합니다. 이는 LINQ를 통해 달성할 수 있습니다.
Except() 메서드 사용
LINQ는 두 번째 목록에 없는 첫 번째 목록의 모든 요소를 반환하는 Except()
메서드를 제공합니다. 다음과 같이 사용할 수 있습니다:
<code class="language-csharp">var result = peopleList2.Except(peopleList1);</code>
이렇게 하면 ID 4와 5를 가진 사람이 포함된 컬렉션이 반환됩니다.
LINQ 쿼리 구문 사용
LINQ를 사용하면 쿼리 구문을 사용하여 필터링 작업을 수행할 수도 있습니다. 쿼리 구문을 사용하여 동일한 결과를 얻는 한 가지 방법은 다음과 같습니다.
<code class="language-csharp">var result = from p in peopleList2 where !peopleList1.Any(p2 => p2.ID == p.ID) select p;</code>
이 쿼리는 Except()
메소드와 동일한 결과를 생성합니다.
공연 설명:
두 방법의 시간 복잡도는 O(n*m)입니다. 여기서 n과 m은 비교되는 두 목록의 크기입니다. 즉, 목록의 크기가 커질수록 필터링 작업에 필요한 시간이 크게 늘어납니다. 대규모 데이터 세트의 경우 성능을 최적화하기 위해 다른 방법을 모색해야 할 수도 있습니다.
위 내용은 LINQ는 다른 목록의 항목 존재 여부를 기반으로 한 목록의 항목을 어떻게 효율적으로 필터링할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!