LINQ の WHERE 句の動的構築
LINQ クエリを構築するときは、ユーザー入力または実行時の条件に基づいて WHERE 句を動的に組み立てる必要がある場合があります。これは、複雑なフィルターや動的なデータ選択を扱う場合に特に便利です。
たとえば、フィールド名とそれに対応する値の辞書として渡す多数のチェックボックスを備えたフォームがあるとします。この動的フィルタリングを LINQ クエリに組み込むには、提供されたコード例で示されているチェーン方法を使用できます。
<code class="language-c#">var q = from c in db.ProductDetail where c.ProductGroupName == productGroupName && c.ProductTypeName == productTypeName select c; foreach (var filterPair in filterDictionary) { q = q.Where(c => filterPair.Value.Contains(c.GetPropertyValue(filterPair.Key))); } q = q.OrderBy(c => c.ProductTypeName);</code>
この例では、filterDictionary が反復処理され、フィルター ペア (キーと値のペア) ごとに、新しい WHERE 句がクエリに追加されます。 GetPropertyValue メソッドを呼び出して、指定された fieldName のプロパティ値を動的に取得します。
ソリューションで提供されているサンプル コードに示すように、最初のクエリ ステートメントで WHERE 句を直接連結することもできます。
以上がLINQ クエリで WHERE 句を動的に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。