2017-06-24 13 views
-3

私は結果ビューのために複数の結果を持っています。現在、私は現在、 'または'演算子で複数の未知の値を含むlinq文を定義しようとしています。linq 'ここで'と 'または'演算子

これは私が

  for (int b = 0; b < result3.Count(); b++) 
      { 
       int value = result3[b].category_id; 
       query4 = query4.Where(p => p.category_id == value).OrderBy(p => p.sort_order); 
       tempData.Add(value); 
      } 

を行う方法ですが、結果は何されている、これは「と」句、私は「または」演算子を作成したいが、それは可能ですか?

+0

私は 'operator'というキーワードを使うべきだと思います。 –

+0

Expressionをビルドして一度適用する必要があります。おそらく、[LINQKit](https://github.com/scottksmith95/LINQKit)のようなものを使う方が簡単でしょう –

答えて

3

ここで必要な明示的なループ

var ids = result3.Where(x => x.category_id); 
    query4 = query4.Where(x => ids.Contains(x.category_id)) 
    tempData = query4.Select(z => z.category_id) 
        .OrderBy(c => c.sort_order); 

これはおそらく、あなたのループの中で期待される「OR」出力が得られます。しかしTempDataを変数はresult3query4は、同じタイプTのenumerablesある場合query4前に、あなたができるセットアップTempDataをVARのidで抽出されたが、ただ並べ替え、これとまったく同じ値が含まれていますを使用し、それを使用してquery4をフィルタリングします。

var tempData = result3.Where(x => x.category_id) 
         .OrderBy(c => c.sort_order) 
         .Select(p => p.category_id); 
    query4 = query4.Where(x => tempData.Contains(x.category_id)) 
+0

これは答えだと思います –

関連する問題