LINQ クエリを使用してリスト内の項目をフィルター処理します
LINQ は、項目が別のリストに存在するかどうかに基づいて、リスト内の項目をフィルターする効率的な方法を提供します。以下のコード例を参照してください:
<code class="language-csharp">class Program { static void Main(string[] args) { // 示例数据 List<Person> peopleList1 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 } }; List<Person> peopleList2 = new List<Person>() { new Person() { ID = 1 }, new Person() { ID = 2 }, new Person() { ID = 3 }, new Person() { ID = 4 }, new Person() { ID = 5 } }; } } class Person { public int ID { get; set; } }</code>
peopleList1 にないアイテムを peopleList2 で見つける必要があります。これは LINQ 経由で実現できます。
Except() メソッドを使用します
LINQ は、最初のリストにある 2 番目のリストにないすべての要素を返す Except()
メソッドを提供します。次のように使用できます:
<code class="language-csharp">var result = peopleList2.Except(peopleList1);</code>
これにより、ID 4 と 5 を持つ人々を含むコレクションが返されます。
LINQ クエリ構文を使用する
LINQ では、クエリ構文を使用してフィルタリング操作を実行することもできます。クエリ構文を使用して同じ結果を達成する 1 つの方法は次のとおりです:
<code class="language-csharp">var result = from p in peopleList2 where !peopleList1.Any(p2 => p2.ID == p.ID) select p;</code>
このクエリは、Except()
メソッドと同じ結果を生成します。
パフォーマンスの説明:
両方の方法の時間計算量は O(n*m) であることに注意してください。ここで、n と m は比較される 2 つのリストのサイズです。これは、リストのサイズが大きくなるにつれて、フィルタリング操作に必要な時間が大幅に増加することを意味します。大規模なデータセットの場合、パフォーマンスを最適化するために他の方法を検討する必要がある場合があります。
以上がLINQ は、別のリスト内の項目の存在に基づいて、1 つのリスト内の項目を効率的にフィルタリングするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。