ホームページ >バックエンド開発 >C++ >LINQ を使用してリストから要素を効率的に削除するにはどうすればよいですか?

LINQ を使用してリストから要素を効率的に削除するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-24 03:41:13422ブラウズ

How Can I Efficiently Remove Elements from a List Using LINQ?

LINQ を使用して List 要素を効率的に削除します

LINQ は、コレクション内の特定の要素をフィルターして選択できる強力なデータ クエリ テクノロジです。ただし、List のような可変コレクションを扱う場合、クエリ結果に基づく後続の変更は注意して処理する必要があります。

LINQ クエリと削除

次の LINQ クエリについて考えてみましょう:

<code class="language-csharp">var authors = from x in authorsList
              where x.firstname == "Bob"
              select x;</code>

このクエリは、author という名前の一連の Author オブジェクトを返します。ただし、これらの作成者を authorsList から削除する場合、削除に作成者を使用しても、元のコレクションは直接更新されません。

クエリ結果を削除するためのソリューション

authorsList からクエリ結果を削除するには、主に 2 つの戦略があります。

  1. クエリから要素を除外する: 後で要素を削除する必要を避けるために、クエリを変更して不要な要素を除外できます:
<code class="language-csharp">authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();</code>

これにより、Bob を含まない新しいフィルタリングされた著者リストが効果的に作成されます。

  1. RemoveAll を使用する: クエリをすでに実行していて、authorsList から結果を削除する必要がある場合は、RemoveAll メソッドを使用できます:
<code class="language-csharp">authorsList.RemoveAll(x => x.FirstName == "Bob");</code>

このメソッドは authorsList を反復処理し、述語に一致する要素をすべて削除します。

複数の要素をフィルタリングする別の方法

別のセット (HashSet など) に基づいて複数の特定の要素を削除する必要がある場合:

<code class="language-csharp">var setToRemove = new HashSet<Author>(authors);
authorsList.RemoveAll(x => setToRemove.Contains(x));</code>

このメソッドは、setToRemove 内のすべての著者を authorsList から効果的に削除します。

以上がLINQ を使用してリストから要素を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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