LINQ クエリを使用する場合、ユーザー入力に基づいて WHERE 句を動的に生成する必要がある場合があります。これは、次の例のように、複数の WHERE 句を連結することで実現できます。
メソッドは、一連のフィルター条件を表す辞書をパラメーターとして受け入れます。次に、Where 句を使用して LINQ クエリを構築し、ディクショナリ内の条件に基づいて結果をフィルターします。 GetProductList()
次のコード例は、このメソッドを実装する方法を示しています。
<code class="language-csharp">public IOrderedQueryable<productdetail> GetProductList(string productGroupName, string productTypeName, Dictionary<string, List<string>> filterDictionary) { var q = from c in db.ProductDetail where c.ProductGroupName == productGroupName && c.ProductTypeName == productTypeName select c; //添加select c;避免编译错误 foreach (var filter in filterDictionary) { var fieldName = filter.Key; var values = filter.Value; if (values.Count > 0) { q = q.Where(c => values.Contains(c.GetType().GetProperty(fieldName).GetValue(c, null)?.ToString())); } } return q.OrderBy(c => c.ProductTypeName); }</code>ユーザー入力に基づいて WHERE 句を動的に生成することで、特定の検索条件を対象とする LINQ クエリを作成できます。このアプローチにより柔軟性が提供され、ユーザー定義のパラメーターに基づいてデータを簡単にフィルタリングできます。 このコードは、
の値が filterDictionary
であり、List<string>
オブジェクトの属性名が ProductDetail
のキー名と一致していることを前提としていることに注意してください。 より堅牢な処理を行うには、例外処理と属性名の検証を追加することをお勧めします。 filterDictionary
以上が柔軟なデータ フィルタリングのために LINQ で動的な WHERE 句を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。