C# で複数のリストの共通部分を効率的に見つけるには IEnumerable.Intersect() を使用します
データ分析と処理の分野では、複数のリストの共通部分を見つけることは非常に一般的なタスクです。この問題を解決するには複数の方法がありますが、IEnumerable.Intersect() メソッドを使用すると効率的な解決策が得られます。この記事では、このメソッドを使用して複数のリストの共通部分を特定し、取得する方法を説明します。
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() を使用してこれらのリストの共通部分を見つけるには、次のメソッドを利用できます:
<code class="language-csharp">var intersection = listOfLists .Skip(1) .Aggregate( new HashSet<int>(listOfLists.First()), (h, e) => { h.IntersectWith(e); return h; } );</code>
このソリューションでは次のことを行います:
このソリューションは、IEnumerable.Intersect() を使用して複数のリストの共通部分を見つけるための簡潔かつ効率的な方法を提供します。 HashSet の最適化機能を利用して重複要素を処理し、高速な交差操作を実行します。
listOfLists には、交差を初期化するためのリストが常に少なくとも 1 つ含まれている必要があることに注意することが重要です。リストが空の場合は、ArgumentNullException がスローされます。
以上がC# で IEnumerable.Intersect() を使用して複数のリストの共通部分を効率的に見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。