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