2016-07-14 84 views
3

我有什麼C#返回值基於

我有一個列表,這將只有當滿足一定的條件執行

var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description = t.Description 
    //other stuff 
}).ToList(); 

我想要什麼

此列表正常工作,但現在我想稍微修改它。對於變量中的一個,我想運行一個if-else語句,以及該變量將是if-else語句執行

var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description, //<---------------returns the value of executed if-else statement 
             //if (t.Area.HasValue) Description = a; 
             //else Description = b; 
    OtherStuff = t.OtherStuff 
}).ToList(); 

我的問題是返回結果:在哪裏我把那的if-else條件才能正確執行它?

我試過

我試圖把if-else語句實際變量的場所內的兩個逗號之間。

我嘗試使用temp變量,其結果將返回,但我不想在我的列表中有這個臨時變量。

在我意識到它是一組條件來實際執行該列表之前,我試圖在Where()內部有額外的條件。

搜索和互聯網並沒有得到我想要的結果來嘗試(希望我不只是使用錯誤的搜索標準)。

回答

1
var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description = t.Area.HasValue ? a : b 
    //other stuff 
}).ToList(); 
+0

恭喜你,我是我的小RNG代碼的贏家!而且好像你也需要排名;) –

+0

謝謝!很有趣,我們都同時發佈了相同的答案。 –

2

您可以使用三元運算它下面的方式:

Area = t.Area, 
Description = t.Area.HasValue ? a : b, 
+2

哇 - 我們三個人發表了同樣的答案在30秒內... –

+0

,但我是勝利者:d –

+0

哇,我走了5分鐘O_O –

2
var list = data.Where(!t.Area.HasValue || t => t.Area == response.Area).Select(t => new Status() 
{ 
    PK = t.PK, 
    Area = t.Area, 
    Description = t.Area.HasValue ? a : b, 
    OtherStuff = t.OtherStuff 
}).ToList(); 
+0

謝謝=)但是RNG決定對他有利。讓他有一些初學者運氣的榮耀! =) –