基本上,当我执行下面的查询时,如果没有匹配的Lead,下面的查询就会抛出一个异常.在这种情况下,我更希望总和等于0,而不是抛出异常.

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);

推荐答案

try 将查询更改为:

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();

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

.net相关问答推荐

EF核心类似功能T-SQL UPDATE FROM

ASP.NET核心最小API必须以正斜杠开头吗?

跨请求共享数据

C#:如何构造异步/等待代码,其中许多请求是针对相同的、返回缓慢的数据发出的,这可以满足所有请求

使用 Powershell TOM 在 SSAS 表格中创建分区

为什么这个多态 C# 代码会打印它的功能?

在生产中使用实体框架(代码优先)迁移

如何判断 IOException 是否为 Not-Enough-Disk-Space-Exception 类型?

如何将字符串列表数据绑定到 WPF/WP7 中的 ListBox?

OpenCV的.Net(dotNet)包装器?

.NET 中工作线程和 I/O 线程的简单描述

静态代码块

读取方法的属性值

如何将 NuGet 与 Visual C# Express 一起使用?

如何在可取消的异步/等待中处理 TransactionScope?

从 C# 中的接口继承 XML 注释

如何过滤具有多个条件的 Directory.EnumerateFiles?

如何知道 DateTime 是否在 C# 中的 DateRange 之间

使用没有catch块的try-finally块

作者主签名的时间戳发现了一个建链问题:UntrustedRoot: self-signed certificate in certificate chain