我有什么
我有一个列表,只有在满足某些条件时才会执行
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 语句放在两个逗号之间的实际变量的位置。
我尝试使用临时变量,它的结果将被返回,但我不想在我的列表中有这个临时变量。
在我意识到这是一组实际执行该列表的条件之前,我尝试在 Where() 中设置额外的条件。
搜索 SO 和互联网并没有得到我想要的结果来尝试(希望我不仅仅是使用了错误的搜索条件)。
最佳答案
您可以按照以下方式使用三元运算符:
Area = t.Area,
Description = t.Area.HasValue ? a : b,
关于C# 基于 if 语句在 linq 列表中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382462/