2012-04-05 63 views
1

我對Linq的聲明非常陌生,但讓我說我愛他們。任何在這裏,這裏是我的問題對於查詢的聲明

var faults = from e in _context.Faults 
        where e.Car_FK == Car_ID && e.Model_FK == Model_ID 
        select new { e.Time, e.Drive_Type}; 

我想知道是否有可能有一個if語句在那裏,所以如果MODEL_ID不存在,我可以設置其他值一樣

 ViewData["Message"] = "Please make another selection" 

我正在傳入Car_ID和Model_ID

+0

看看[http:// stacko verflow.com/questions/1030041/if-statement-inside-a-linq-select](http://stackoverflow.com/questions/1030041/if-statement-inside-a-linq-select) – 2012-04-05 14:21:48

+1

只是爲了增加, var是隱含類型的變量,它保存在編譯時分配給它的類型,這些語句是LINQ查詢表達式 – Habib 2012-04-05 14:22:12

+0

要清除它:ViewData通常會進入什麼狀態?用什麼標籤? – 2012-04-05 14:23:06

回答

1

作出後您的查詢,你可以用Any LINQ擴展方法測試項目的可用性

if (faults.Any()) { 
    // Display faults 
} else { 
    ViewData["Message"] = "Please make another selection" 
} 
-1

您可以使用? :運算符在查詢中包含if語句,或者如果您需要根據條件過濾項目,則可以將其置於where子句中。

然而,在你的情況,你可能希望把這個查詢外,因爲要改變應用程序的邏輯:

if(Model_ID==null) 
    ViewData["Message"] = "Please make another selection" 
else 
{ 
    var faults = from e in _context.Faults 
       where e.Car_FK == Car_ID && e.Model_FK == Model_ID 
       select new { e.Time, e.Drive_Type}; 
    //... 
} 

編輯:看評論

+2

雖然這是沒有用的。也許你應該解釋它是什麼,或者提供一個例子的鏈接 – 2012-04-05 14:23:16

+0

對不起,我反應太快了。我確定了我的答案,請考慮你的失望。 – aKzenT 2012-04-05 14:25:27

+1

@AshBurlaczenko它甚至不正確:OP似乎需要基於條件的不同行爲,而不是簡單地基於條件的不同值。你不能用條件運算符來做到這一點。 – phoog 2012-04-05 14:26:18