为什么 GetOrders() 不返回任何元素我得到一个 InvalidOperationException 序列中没有元素。
int maxNumber = GetOrders().Max(o => o.Number);
我该如何解决这个问题,所以我得到整数默认值,当序列为空时为 0,否则我想要最大值是序列不为空。
不使用 Linq,你可以做一些简单的事情,比如
var myOrders = GetOrders();
int maxNumber = myOrders.Any() ? myOrders.Max(o => o.Number) : 0;
您可以使用以下重载Enumerable.DefaultIfEmpty
:
int maxNumber = GetOrders().DefaultIfEmpty(new Order { Number = 0 }).Max(o => o.Number);
如果你只是想选择int
值,这种方法更简单:
int maxNumber = GetOrders().Select(o => o.Number).DefaultIfEmpty(0).Max(o => o);
或者:
int maxNumber = GetOrders().Max( o => (int?) o.Number ) ?? 0;
您可以使用聚合扩展方法。
var max = elements2.Aggregate(0, (m, o) => Math.Max(m, o.Number));