1

List<string> filterCriteriaクライアント側でのユーザー選択に基づいて、データベース内の列を検索するための 1 つまたは複数のキーワードを含む があります。

私が抱えている問題は、「or」演算子がないか、複数(10以上)を持つ可能性があるため、linq to sqlステートメントを構築する方法がよくわからないことです。

これは私の元のクエリです

var originalQuery = (from p in productContext.Products
                         select p);

次に、リストに基づいて、List<string> filterCriteria使用中の単語または演算子で「originalQuery」を照会する必要があります。

例えば

    originalQuery = originalQuery.Where(p => p.ProductRange == "criteria1" || 
    p.ProductRange == "criteria2");

等々...

4

3 に答える 3

2

次のようにできます。

originalQuery = originalQuery.Where(p => filterCriteria.Contains(p.ProductRange));

このようにして、ProductRange に選択された値の 1 つを持つ originalQuery 内のすべての項目を取得します。

于 2012-09-25T08:57:09.317 に答える
1

使用できる別の方法Any

originalQuery.Where(p => filterCriteria.Any(c => c == p.ProductRange));
于 2012-09-25T09:05:16.907 に答える
1

マーティンと同じことをさらに別の書き方で:

var originalQuery = 
    from p in productContext.Products 
    where filterCriteria.Contains(p.ProductRange)
    select p;
于 2012-09-25T09:21:57.940 に答える