ホームページ >バックエンド開発 >C++ >Lambda/LINQ を使用してリスト内の複数のキーワードを効率的に検索するにはどうすればよいですか?

Lambda/LINQ を使用してリスト内の複数のキーワードを効率的に検索するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-21 11:56:09530ブラウズ

How to Efficiently Search for Multiple Keywords in a List Using Lambda/LINQ?

Lambda/LINQ の組み合わせ 複数キーワード検索の条件が含まれています

多くのデータベース操作では、テキスト フィールドで特定のキーワードを検索する必要があることがよくあります。これには通常、SQL での LIKE 演算子の使用が含まれます。例:

<code class="language-sql">SELECT * FROM MainList
WHERE Comment LIKE '%keyword1%'
OR Comment LIKE '%keyword2%'</code>

このクエリは各キーワードを個別に検索するため、複数の LIKE 句を含む複雑なクエリが生成されます。 C# で Lambda/LINQ を使用して同様の検索を実行するには、次のシナリオを考慮する必要があります:

既知の条件:

  • MainList: コメントフィールドを含むリスト
  • キーワード: 検索するキーワードのリスト

期待される結果:

  • MainList の Comments フィールドにキーワード リスト内のキーワードが含まれるレコードを含む新しいリスト。

このソリューションでは、FilterByItems と呼ばれる拡張メソッドを利用します。

<code class="language-csharp">var newList = MainList
   .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true)
   .ToList();</code>

FilterByItems メソッドは次のパラメータを受け入れます:

  • 項目: 検索するキーワードのリスト
  • filterPattern: レコードに特定のキーワードが含まれているかどうかを確認するために使用される式
  • isOr: 述語を結合するために OR 演算子または AND 演算子を使用するかどうかを示すフラグ (デフォルトは OR)

このメソッドは、filterPattern 式内のプレースホルダー パラメーターを項目リスト内の各キーワードに置き換えます。生成された述語は、MainList をフィルタリングするために使用されます。

ExpressionReplacer クラスは、述語内のパラメーターの置換を処理します。プレースホルダー パラメーターを実際のキーワード値に置き換えます。

このアプローチにより、1 つのクエリで複数のキーワードを効率的に検索できるようになり、複数の LIKE 句の必要性が減り、SQL ステートメントが簡素化されます。

以上がLambda/LINQ を使用してリスト内の複数のキーワードを効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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