c# - Razor Page .NET Core 2.2 If + ElseIf 语句在 Lambda 表达式中不起作用
问题描述
“.OrderBy(p =>”下方的“=>”下面有一个红色波浪线,并在尝试构建时返回此错误。我想做的是根据字段内容对字段进行条件排序。我有尝试了带括号和不带括号。我已经搜索过,但由于“if”语句,这个问题有所不同。我在最后尝试了一个“else”语句,但这会使各种事情变红。
“并非所有代码路径都在 'Func' 类型的 lambda 表达式中返回一个值”,然后在我添加“else return 3”后出现错误:“带有语句体的 lambda 表达式无法转换为表达式树。”
public List<OESAC.Models.BoardMembers> BoardMembers { get; set; }
public async Task OnGetAsync()
{
BoardMembers = await _context.BoardMembers
.Select(p => new OESAC.Models.BoardMembers
{
WholeName = p.WholeName,
Office = p.Office,
Email = p.Email,
Representing = p.Representing,
WebDisplaySection = p.WebDisplaySection,
Employer = p.Employer
}).Where(p => p.WebDisplaySection == "Officers").OrderBy(p =>
{
if (p.Office == "President")
return 0;
else if (p.Office == "Vice-President")
return 1;
else if (p.Office == "Secretary-Treasurer")
return 2;
}).ToListAsync();
解决方案
我替换了这个:
.OrderBy(p =>
{
if (p.Office == "President")
return 0;
else if (p.Office == "Vice-President")
return 1;
else if (p.Office == "Secretary-Treasurer")
return 2;
}).ToListAsync();
有了这个:
.OrderBy(p => p.Office == "President" ? 0 : p.Office == "Vice-President" ? 1 : p.Office == "Secretary-Treasurer" ? 2 : 3).ToListAsync();
我希望它对某人有用。从未在其他任何地方看到过这个解决方案。
推荐阅读
- python-2.7 - 以下python执行语句对我来说没有意义,有人可以解释一下吗?
- assembly - 如何用汇编语言读取命令行参数?
- r - 如何构建循环以查找有关数据框中列的某些值的模式
- android - 在 Android 中每分钟运行一个后台任务
- fortran - 在同一个 ASSOCIATE 构造中引用另一个关联实体中的关联名称
- vhdl - 多进程的信号控制
- mysql - FOREIGN KEY ... REFERENCE 没有错误,但只是从数据库中空列
- c# - 如何将无类型值的多态字典的值反序列化为传统的.Net数组?
- hyperledger-fabric - 为什么 hyperledger-fabric 需要不止一个 orderer?
- java - 在 Java 11 中使用 HttpBuilder API,在哪里指定 hostNameVerifier?