linq中的最小值与最大值

时间:2017-03-30 06:13:59

标签: linq

请帮助我理解为什么如果我的运行为空,第二行会返回异常。 即使我的某些时间表没有运行,我也可以使用maxDate

var maxDate = schedulingList.Max(p => p.Runs.Max(x => x.StartDate));
var minDate = schedulingList.Min(s => s.Runs.Min(r => r.StartDate));

获取minDate的最佳方法是什么(null是可行的)? 非常感谢提前

2 个答案:

答案 0 :(得分:0)

您可以选择所有日期,在其上执行DefaultIfEmpty,然后获取最小值和最大值。

DefaultIfEmpty方法将确保您至少拥有一项https://msdn.microsoft.com/en-us/library/bb360179(v=vs.110).aspx

var dates = schedulingList.SelectMany(p=>p.Runs.Select(t=>t.startDate)).DefaultIfEmpty();
var maxDate = dates.Max();
var minDate = dates.Min();

答案 1 :(得分:-1)

var minDate = schedulingList.Min(s => s.Runs.Min(r => r.StartDate))。FirstorDefault();

希望这项工作,