>백엔드 개발 >C++ >IEnumerable.Intersect()는 C#에서 여러 목록의 교차점을 어떻게 찾을 수 있습니까?

IEnumerable.Intersect()는 C#에서 여러 목록의 교차점을 어떻게 찾을 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-15 12:13:44663검색

How Can IEnumerable.Intersect() Find the Intersection of Multiple Lists in C#?

IEnumerable.Intersect()를 사용하여 C#에서 여러 목록의 교차점을 찾습니다

C#에서는 IEnumerable.Intersect()을 사용하여 여러 목록의 공통 요소를 효율적으로 찾을 수 있습니다.

문제 설명

목록 집합이 있고 해당 목록의 교차 요소를 찾아야 한다고 가정해 보겠습니다. 예:

<code class="language-csharp">var list1 = new List<int>() { 1, 2, 3 };
var list2 = new List<int>() { 2, 3, 4 };
var list3 = new List<int>() { 3, 4, 5 };
var listOfLists = new List<List<int>>() { list1, list2, list3 };

// 预期交集为 List<int>() { 3 }</code>

이 작업은 IEnumerable.Intersect()을 사용하여 교차로 검색을 구현하는 것입니다.

솔루션

여러 목록에서 교차 연산을 수행하려면 IEnumerable.Intersect()을 반복적으로 사용하세요. foreach 루프를 사용하여 먼저 처음 두 목록의 교차점을 계산한 다음 결과를 세 번째 목록과 교차하는 식으로 모든 목록이 처리될 때까지 계속합니다.

<code class="language-csharp">// 使用第一个列表初始化交集
var intersection = listOfLists[0].ToHashSet();

// 与其余列表求交集
foreach (var list in listOfLists.Skip(1))
{
    intersection.IntersectWith(list.ToHashSet());
}</code>

이 솔루션은 간단하고 쉽습니다.

실적 노트

이 솔루션의 성능은 목록 수와 크기에 따라 달라질 수 있습니다. 대규모 데이터 세트의 경우 HashSet을 사용하는 등 보다 최적화된 솔루션을 사용하는 것이 좋습니다.

위 내용은 IEnumerable.Intersect()는 C#에서 여러 목록의 교차점을 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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