Lambda/LINQ の組み合わせ 複数キーワード検索の条件が含まれています
多くのデータベース操作では、テキスト フィールドで特定のキーワードを検索する必要があることがよくあります。これには通常、SQL での LIKE 演算子の使用が含まれます。例:
<code class="language-sql">SELECT * FROM MainList WHERE Comment LIKE '%keyword1%' OR Comment LIKE '%keyword2%'</code>
このクエリは各キーワードを個別に検索するため、複数の LIKE 句を含む複雑なクエリが生成されます。 C# で Lambda/LINQ を使用して同様の検索を実行するには、次のシナリオを考慮する必要があります:
既知の条件:
期待される結果:
このソリューションでは、FilterByItems と呼ばれる拡張メソッドを利用します。
<code class="language-csharp">var newList = MainList .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true) .ToList();</code>
FilterByItems メソッドは次のパラメータを受け入れます:
このメソッドは、filterPattern 式内のプレースホルダー パラメーターを項目リスト内の各キーワードに置き換えます。生成された述語は、MainList をフィルタリングするために使用されます。
ExpressionReplacer クラスは、述語内のパラメーターの置換を処理します。プレースホルダー パラメーターを実際のキーワード値に置き換えます。
このアプローチにより、1 つのクエリで複数のキーワードを効率的に検索できるようになり、複数の LIKE 句の必要性が減り、SQL ステートメントが簡素化されます。
以上がLambda/LINQ を使用してリスト内の複数のキーワードを効率的に検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。