小编典典

如何在源集合为空时强制 LINQ Sum() 返回 0

all

基本上,当我执行以下查询时,如果没有匹配的线索,则以下查询会引发异常。在这种情况下,我宁愿让总和等于 0,而不是抛出异常。这是否可能在查询本身 -
我的意思是而不是存储查询和检查query.Any()

double earnings = db.Leads.Where(l => l.Date.Day == date.Day
                && l.Date.Month == date.Month
                && l.Date.Year == date.Year
                && l.Property.Type == ProtectedPropertyType.Password
                && l.Property.PropertyId == PropertyId).Sum(l => l.Amount);

阅读 83

收藏
2022-06-24

共1个答案

小编典典

尝试将您的查询更改为:

db.Leads.Where(l => l.Date.Day == date.Day
            && l.Date.Month == date.Month
            && l.Date.Year == date.Year
            && l.Property.Type == ProtectedPropertyType.Password
            && l.Property.PropertyId == PropertyId)
         .Select(l => l.Amount)
         .DefaultIfEmpty(0)
         .Sum();

这样,您的查询将只选择该Amount字段。如果集合为空,它将返回一个值为 的元素,0然后应用总和。

2022-06-24