C# 基于 if 语句在 linq 列表中返回值

标签 c# linq if-statement

我有什么

我有一个列表,只有在满足某些条件时才会执行

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/

相关文章:

c# - 为什么 .Select 将 Enumerable.Empty 更改为 System.Linq.EmptyPartition?

r - 在 ifelse() 语句内部和外部运行一行时的不同输出

python - 使用单个递归打印前十个数字的总和,就像Python中的if else一样

windows - 如何在具有多个 IF 语句的 .bat 文件中使用 ELSE 语句?

c# - 资源 (.resx) 文件 关键命名约定?

c# - MSBuild BuildInParallel,无法运行的自定义任务生成过程

c# - c#中的小数舍入似乎是错误的

c# - 所有获取数据库对象的 linq 都应该用 try catch 包围吗?

c# - Linq Contains() 是否检查 HashSet?

c# - 如何在后台运行Unity程序?