首先我尝试了这个,我的代码:
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();
但是我留下了以下错误:
并非所有代码路径都返回type的lambda表达式中的值 '功能'
答案 0 :(得分:3)
在这里,您需要从所有路径中返回一些东西。
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();
答案 1 :(得分:1)
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”或带有标准数据的新元素。或者使用Where(...)表示lambda并阻止“If” - 不需要。