Peu*_*uge 6 c# linq linq-to-sql
我有以下查询
from p in _context.Products
where p.Purchases.Sum(item => item.CCAmount) > 0 && p.Purchases.Sum(item => item.CCAmount) > p.PayOuts.Sum((item => item.AmountPaid)
select p;
Run Code Online (Sandbox Code Playgroud)
基本上我正在尝试检索所有总和购买金额大于0并且其总计购买金额大于我们支付的金额的产品(我们代表其他人销售产品并以全额或部分付款方式支付).问题是,如果特定产品的支付表中没有条目,那么该产品不会出现在结果列表中.但是,如果我在支付表中插入支付,那么该产品将显示在产品列表中.它几乎就像在空集合上使用sum一样不会像人们预期的那样进行评估,即为0.我在这里遗漏了什么吗?
谢谢你的帮助.
问题是如果没有要记录的记录,则SUM
在SQL中返回null
.
你需要作弊.
尝试:
((int?)p.PayOuts.Sum(item => item.AmountPaid)).GetValueOrDefault()
Run Code Online (Sandbox Code Playgroud)
或以一点点不同的方式写
((int?)p.PayOuts.Sum(item => item.AmountPaid) ?? 0)
Run Code Online (Sandbox Code Playgroud)