基本上,当我执行以下查询时,如果没有匹配线索,则以下查询将引发异常。在那种情况下,我希望总和等于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);
有什么例外?
—
Toto
我得到一个例外:转换为值类型'Int32'失败,因为实例化值为null。结果类型的通用参数或查询必须使用可为空的类型。
—
约翰·梅耶
@Stijn,没有,您所做的仍然无法成功。问题
—
Mike Perrenoud 2013年
SQL
是生成方法。Amount
实际上不是null
,这实际上是围绕如何处理零结果的问题。看看提供的答案。
您不应该对美元金额使用双倍!偶数美元金额。绝对不要在打算使用确切量的情况下使用两倍。您的数据库列应为
—
ErikE
decimal
,代码应使用decimal
。忘记你所知道的float
和double
你的编程生涯,直到有一天有人告诉你使用它们,统计或星亮度或电子的随机过程或付费的结果!在那之前,您做错了。
Where
不回来null
,如果它没有找到任何记录,它将返回零项的列表。有什么例外?