2016-07-14 44 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决定对他有利。让他有一些初学者运气的荣耀! =) –