我收到以下错误:
转换为值类型'System.Int32'失败,因为实现的值为null.结果类型的泛型参数或查询必须使用可空类型.
如何使我的lambda表达式可以为空?
d.QtyOnOrder = db.DieOrders.Where(c=>c.DrawDie.SizeUS==d.SizeUS).Sum(c => c.QtyOpen);
Run Code Online (Sandbox Code Playgroud)
更新:以下代码有效.有人能告诉我为什么Linq表达式有效而Lambda没有?
var dies = from e in db.DieOrders
where e.DrawDieID == d.ID && e.QtyOpen !=null
select e;
var _qtyOpen = dies.Sum(x => x.QtyOpen);
Run Code Online (Sandbox Code Playgroud)
我喜欢@RezaRahmati 的建议,但另一种选择是:
d.QtyOnOrder = db.DieOrders.Where(c=>c.DrawDie.SizeUS==d.SizeUS && d.QtyOpen.HasValue)
.Sum(c => c.QtyOpen);
Run Code Online (Sandbox Code Playgroud)
如果所有这些都QtyOpen为空,那么您将对一个空列表求和,结果为零。
然而,我喜欢 Reza 的答案,因为它更明确地表明,如果总和为空,则将结果设置为零。