我有下一个LINQ,其中 o.Value 和 p.Value 是十进制类型
from o in dbContext.Ammounts
where o.Value > (from p in dbContext.Payments select p).Sum(p => p.Value))
内部LINQ from p in dbContext.Payments select p).Sum(p => p.Value)
可以返回NULL值,我需要应用ISNULL(linq_sentence, 0)
我试着用这个:
from o in dbContext.Ammounts
where o.Value > ((from p in dbContext.Payments select p).Sum(p => p.Value)) ?? 0m)
但是我收到此消息错误:
运营商'??'不能应用于'decimal'类型的操作数 '小数'
答案 0 :(得分:0)
当Linq2SQL中的集合为空时,聚合返回null
。如果聚合的值不可为空,则会抛出异常。要解决此问题,请将聚合的值转换为可为空的类型。
from o in dbContext.Ammounts
where o.Value > ((from p in dbContext.Payments select p)
.Sum(p => (decimal?)p.Value)) ?? 0m);