如何使lambda查询可以为空?

Bil*_*eer 5 c# lambda

我收到以下错误:

转换为值类型'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)

Mat*_*and 4

我喜欢@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 的答案,因为它更明确地表明,如果总和为空,则将结果设置为零。