Lambda/LINQ を条件付きで使用した複数キーワード検索
このガイドでは、コメント リスト内の複数のキーワードを同時に検索する方法を説明します。単一のキーワードを検索する例は数多くありますが、このガイドでは、任意のキーワード インスタンスを一度に検索するためのソリューションを提供します。
この目標を達成するには、次の手順を実行できます:
<code class="language-csharp">public static class QueryableExtensions { public static IQueryable<T> FilterByItems<T, TItem>(this IQueryable<T> query, IEnumerable<TItem> items, Expression<Func<T, TItem, bool>> filterPattern, bool isOr) { // ... 方法实现 ... } }</code>
<code class="language-csharp">var newList = MainList .FilterByItems(keywords, (m, k) => m.Comments.Contains(k), true) .ToList();</code>
ここで、FilterByItems
メソッドは、必要なフィルタリングを実行する述語を生成します。 keywords
パラメーターは検索用語のリストを表し、指定されたラムダ式は Comments
フィールドにこれらのキーワードのいずれかが含まれているかどうかをチェックします。 isOr
パラメータは、フィルタリングが論理 OR (任意のキーワードが一致) であるか、論理 AND (すべてのキーワードが一致) であるかを決定します。
FilterByItems
メソッドは、キーワードをループして述語を構築します。指定されたラムダ式の引数を各キーワードに置き換えて、キーワードごとに個別の条件を作成します。最後に、isOr
値に基づいて OR または AND を使用してこれらの条件を結合し、クエリに適用できる単一の述語を作成します。
ExpressionReplacer
クラスは、ラムダ式内の式を置換するために使用されます。式の辞書を入力として受け取り、元の式を変更して、辞書に一致する式に置き換えます。これにより、指定されたキーワードに基づいて述語を動的に変更できます。
このアプローチでは、Lambda/LINQ 構文を使用して、コメント内の複数のキーワードを効果的かつ効率的に検索できます。
以上がLambda/LINQ を使用してコメントのリスト内の複数のキーワードを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。