【发布时间】:2022-01-03 10:03:56
【问题描述】:
我有一个返回一个月平均销售额的简单函数。但是,当新的一个月开始时,没有记录,我得到了以下异常:
System.InvalidOperationException: '序列不包含任何元素。'
public double GetTotalMonthlyAvgSales()
{
return _DbContext.Carts.Where(x => x.Created.Month == DateTime.UtcNow.Month && x.Created.Year == DateTime.UtcNow.Year).Select(x => x.TotalAmount).Average();
}
处理此异常的最佳方法是什么?
【问题讨论】:
-
好吧,只有在
_DbContext.Carts.Where(x => x.Created.Month == DateTime.UtcNow.Month && x.Created.Year == DateTime.UtcNow.Year).Select(x => x.TotalAmount)中有元素时才调用Average()?拆分通话并使用Any()检查内容是一种解决方案。 -
最好先使用
Any()检查是否有匹配的购物车商品。如果没有,则可能返回0或-1,但该值由您决定。null可能是更有意义的响应,如果您可以将返回类型更改为double?。 -
如果
where方法没有返回记录,你想返回什么?
标签: c# asp.net .net asp.net-mvc