基于 if 语句的 linq 列表中的 C# 返回值
本文关键字:返回值 列表 linq if 语句 基于 | 更新日期: 2023-09-27 17:57:10
我有什么
我有一个列表,只有在满足某些条件时才会执行
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,
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();
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();