C#并非所有代码路径都返回func类型的有效lambda表达式
本文关键字:类型 func 有效 表达式 lambda 返回 路径 代码 | 更新日期: 2023-09-27 18:11:11
首先我尝试了这个,我的代码:
timeReports = timeReports.OrderByDescending(x => x.Date)
.ThenByDescending(x => x.TimeReportDatas.First().StartHour)
.ToList();
但在我的项目中,我所有的项目都没有TimeReportDatas
,所以它确实崩溃了,因为它不包含任何元素。
所以我把代码改成了这个:
timeReports = timeReports.OrderByDescending(x => x.Date).ThenByDescending(x =>
{
TimeReportData firstOrDefault = x.TimeReportDatas.FirstOrDefault();
if (firstOrDefault != null)
return firstOrDefault.StartHour;
}).ToList();
但是我留下了以下错误:
并非所有代码路径都在类型为的lambda表达式中返回值"Func">
在这里,您需要从所有路径返回一些东西。
timeReports = timeReports.OrderByDescending(x => x.Date).ThenByDescending(x =>
{
var firstOrDefault = x.TimeReportDatas.FirstOrDefault();
if (firstOrDefault != null)
{
return firstOrDefault.StartHour;
}
else
{
return 0;
}
}).ToList();
或者更简单的方法:
timeReports = timeReports.OrderByDescending(x => x.Date)
.ThenByDescending(x => (x.TimeReportDatas.FirstOrDefault() != null) ? x.TimeReportDatas.First().StartHour : 0)
.ToList();
timeReports = timeReports.OrderByDescending(x => x.Date).ThenByDescending(x =>
{
TimeReportData firstOrDefault = x.TimeReportDatas.FirstOrDefault();
if (firstOrDefault != null)
return firstOrDefault.StartHour;
return 0;
}).ToList();
如果firstOrDefault为null,则返回"0"或带有标准数据的新元素。或者对lambda使用Where(…(并阻止"If"-不需要。