2017-06-24 44 views
-3

我有一個結果視圖的多個結果,現在我正在嘗試使用'或'運算符來定義包含多個未知值的linq語句。linq'where'和'or'運算符

這是我該怎麼辦

  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

我想我應該使用關鍵字'運營商' –

+0

您需要建立一個表達式,然後申請一次。這可能會更容易使用像[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的變量正好包含在VAR IDS提取相同的價值觀,但只是排序,因此,如果result3query4是同一類型T的可枚舉,那麼你可以設置TempData的query4前並用它來過濾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

是的,我認爲這是答案 –