ホームページ >バックエンド開発 >C++ >C# で IEnumerable.Intersect() が複数のリストの共通部分を見つけるにはどうすればよいですか?

C# で IEnumerable.Intersect() が複数のリストの共通部分を見つけるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-15 12:13:44660ブラウズ

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

C# で複数のリストの共通部分を見つけるには 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() を使用してこの交差点検索を実装することです。

解決策

複数のリストに対して交差演算を実行するには、IEnumerable.Intersect() を繰り返し使用します。 foreach ループを使用して、最初に最初の 2 つのリストの交差を計算し、次にその結果を 3 番目のリストと交差するということを、すべてのリストが処理されるまで繰り返します。

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

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

この解決策はシンプルで簡単です。

パフォーマンスノート

このソリューションのパフォーマンスは、リストの数とサイズによって異なる場合があります。大規模なデータセットの場合は、HashSet の使用など、より最適化されたソリューションを使用することをお勧めします。

以上がC# で IEnumerable.Intersect() が複数のリストの共通部分を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。