ホームページ >バックエンド開発 >C++ >柔軟なデータ フィルタリングのために LINQ で動的な WHERE 句を作成する方法

柔軟なデータ フィルタリングのために LINQ で動的な WHERE 句を作成する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-14 07:13:44618ブラウズ

How to Create Dynamic WHERE Clauses in LINQ for Flexible Data Filtering?

動的 LINQ WHERE 句

LINQ クエリを使用する場合、ユーザー入力に基づいて WHERE 句を動的に生成する必要がある場合があります。これは、次の例のように、複数の WHERE 句を連結することで実現できます。

メソッドは、一連のフィルター条件を表す辞書をパラメーターとして受け入れます。次に、Where 句を使用して LINQ クエリを構築し、ディクショナリ内の条件に基づいて結果をフィルターします。 GetProductList()

各 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
            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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。