큰 목록의 차이점을 효율적으로 비교하기 위한 전략
큰 목록으로 작업할 때 차이점을 비교하는 것은 리소스 집약적일 수 있습니다. LINQ의 Contains()
방법은 일반적인 방식이지만 대규모 데이터 세트에는 비효율적입니다. 더 나은 해결책은 Except()
방법을 사용하는 것입니다.
Except() 메서드 사용
Except()
메서드는 IEnumerable
에서 작동하며 한 목록에는 있지만 다른 목록에는 없는 요소를 찾습니다. 두 목록에 Except()
을 적용하면 두 개의 새로운 목록이 생성됩니다.
firstNotSecond
: 첫 번째 목록에는 있지만 두 번째 목록에는 누락된 요소를 포함합니다. secondNotFirst
: 첫 번째 목록에서 누락된 두 번째 목록의 요소를 포함합니다. 이 방법은 Contains()
검사를 사용하는 것보다 훨씬 빠릅니다. 예:
<code class="language-csharp">var firstNotSecond = list1.Except(list2).ToList(); var secondNotFirst = list2.Except(list1).ToList();</code>
결과 병합
원하는 경우 결과를 단일 명령문으로 결합할 수 있습니다.
<code class="language-csharp">return !firstNotSecond.Any() && !secondNotFirst.Any();</code>
이 문은 두 입력 목록에 정확히 동일한 요소가 포함되어 있으면 true
로 평가되고, 그렇지 않으면 false
로 평가됩니다.
반복요소 주의사항
Except()
메소드는 Contains()
메소드와 반복되는 요소를 다르게 처리한다는 점에 주목할 필요가 있습니다. 원래 코드에서는 두 번째 목록에 없는 첫 번째 목록의 중복 요소가 여러 번 보고되었습니다. 그러나 Except()
은 반복되는 각 요소를 한 번만 보고합니다. 이 솔루션을 사용할 때는 이러한 차이점을 고려해야 합니다.
위 내용은 C#에서 두 개의 대규모 목록의 차이점을 효율적으로 비교하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!