簡體   English   中英

Linq以SML與lambda sum作為where條件

[英]Linq to Sql with lambda sum as a where condition

我有以下查詢

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM