基本上,当我执行以下查询时,如果没有匹配的线索,则以下查询会引发异常。在这种情况下,我宁愿让总和等于 0,而不是抛出异常。这是否可能在查询本身 - 我的意思是而不是存储查询和检查query.Any()?
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);
尝试将您的查询更改为:
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然后应用总和。
Amount
0