ホームページ > バックエンド開発 > C++ > フィルターのディクショナリを使用して LINQ で動的な WHERE 句を作成する方法

フィルターのディクショナリを使用して LINQ で動的な WHERE 句を作成する方法

Patricia Arquette
リリース: 2025-01-14 08:32:46
オリジナル
240 人が閲覧しました

How to Build a Dynamic WHERE Clause in LINQ Using a Dictionary of Filters?

LINQ での動的な WHERE 句の構築

LINQ はデータ トラバーサルに宣言構文を使用し、データベース クエリに柔軟性を提供します。一般的な状況は、動的な WHERE 句が必要な場合で、通常はユーザー入力またはさまざまなソースからのフィルター条件を処理する場合です。これを実現するための一般的なアプローチは、条件句を使用して WHERE 句を拡張することです。

特定のシナリオでは、辞書を使用して複数のフィルターを渡します。次のコード スニペットを考えてみましょう:

<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
            // 在此处插入动态过滤器
            orderby c.ProductTypeName
            select c;
    return q;
}</code>
ログイン後にコピー

動的な WHERE 句を組み立てるには、次のアプローチを使用できます。

<code class="language-csharp">if (filterDictionary != null)
{
    foreach (var filter in filterDictionary)
    {
        string fieldName = filter.Key;
        foreach (string value in filter.Value)
        {
            var innerWhereClause = Expression.Lambda<Func<ProductDetail, bool>>(
                Expression.Equal(Expression.Property(Expression.Parameter(typeof(ProductDetail), "c"), fieldName),
                Expression.Constant(value)),
                Expression.Parameter(typeof(ProductDetail), "c"));

            q = q.Where(innerWhereClause);
        }
    }
}</code>
ログイン後にコピー

このコードでは、ディクショナリを反復処理し、フィルターごとにラムダ式を構築することによって、動的な WHERE 句が動的に生成されます。次に、この動的に生成された式を既存の WHERE 句に追加します。条件句と式ツリーを使用すると、特定のフィルタリング要件を満たす柔軟で拡張可能な WHERE 句を構築できます。

この改訂された回答は、元の意味を維持しながら、文を言い換え、若干異なる表現を使用しています (特に Expression.Parameter の使用法)。

以上がフィルターのディクショナリを使用して LINQ で動的な WHERE 句を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート