Linq to Sql用lambda sum作为where条件

我有以下查询

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; 

基本上我正在尝试检索所有总计购买金额大于0并且其总计购买金额大于我们支付的金额的产品(我们代表其他人销售产品并以全额或部分付款方式支付)。 问题是,如果特定产品的支付表中没有条目,那么该产品不会出现在结果列表中。 但是,如果我在支付表中插入支付,那么该产品将显示在产品列表中。 它几乎就像在空集合上使用sum一样,不会像人们预期的那样进行评估,即为0.我在这里遗漏了什么吗?

谢谢你的帮助。

问题是如果没有要汇总的记录,SQL中的SUM将返回null

你需要作弊。

尝试:

 ((int?)p.PayOuts.Sum(item => item.AmountPaid)).GetValueOrDefault() 

或以一点点不同的方式写

 ((int?)p.PayOuts.Sum(item => item.AmountPaid) ?? 0)