2012-02-29 62 views
0

如何用這些條件編寫linq查詢..首先,我們必須檢查OrderType是否爲真然後應檢查條件。如何編寫查詢..如果我關閉條件.OrderType.XYZ),那麼它說「ZJ」不屬於當前context..if我們刪除任何錯誤,但我們r沒有得到REQ結果有多個條件的Linq查詢

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem }). 
    .Where((zj => wo.OrderId== (int)BL.OrderType.PQR || zj.OrderId== (int)BL.OrderType.XYZ) 
      &&(zj.OrderId== (int)BL.Statuses.Assigned 
      || zj.OrderId== (int)BL.Statuses.Planned 
      || zj.OrderId== (int)BL.Statuses.InProgess 
      || zj.OrderId== (int)BL.Statuses.Paused 
      || zj.OrderId== (int)BL.Statuses.Ready)).Any(); 
return btnEnable; 
+0

你問「首先我們必須檢查OrderType如果這是真的,那麼應檢查條件。」但你在你的例子中明確使用枚舉。 – Brian 2012-02-29 22:07:55

回答

2

我認爲這是由於一些錯放括號。你有.Where((zj => ...) ... zj ...)。變量zj不存在於第一組括號之外。它應該是這樣的:

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem }) 
    .Where(zj => (wo.OrderId== (int)BL.OrderType.PQR || zj.OrderId== (int)BL.OrderType.XYZ) 
      && (zj.OrderId== (int)BL.Statuses.Assigned 
      || zj.OrderId== (int)BL.Statuses.Planned 
      || zj.OrderId== (int)BL.Statuses.InProgess 
      || zj.OrderId== (int)BL.Statuses.Paused 
      || zj.OrderId== (int)BL.Statuses.Ready)).Any(); 
return btnEnable; 
2
var readyStats = new [] { 
    (int)BL.Statuses.Assigned, 
    (int)BL.Statuses.Planned, 
    (int)BL.Statuses.InProgess, 
    (int)BL.Statuses.Paused, 
    (int)BL.Statuses.Ready, 
}; 

var orderTypes = new [] { 
    (int)BL.OrderType.PQR, 
    (int)BL.OrderType.XYZ 
} 

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem }). 
    .Where(wo => orderTypes.Contains(wo.OrderId) && readyStats.Contains(wo.OrderId)).Any(); 

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem }). 
     .Any(wo => orderTypes.Contains(wo.OrderId) && readyStats.Contains(wo.OrderId)); 

我認爲這個問題是在這裏:

.Where((zj => wo. 

正確的版本笑可能是:

.Where(zj => zj. 
+0

更可讀的答案 – 2012-02-29 22:15:55

+1

謝謝阿德里安..這真的很有幫助 – GANI 2012-02-29 22:44:35

2

您似乎有一個不匹配的括號問題。

.Where((zj => wo.OrderId== (int)BL.OrderType.PQR || zj.OrderId== (int)BL.OrderType.XYZ) 
    ^                   ^

那是與你的變量的作用域搞混。重新審視它。