2011-11-03 105 views
6

我有以下查詢LINQ到與拉姆達和作爲SQL 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且其合計採購金額大於所有產品我們支付的金額(我們代表其他人出售產品並全額或部分支付)。問題是,如果特定產品的支出表中沒有條目,則該產品不會出現在結果列表中。但是,如果我將支出插入支出表中,那麼該產品將顯示在產品列表中。它幾乎就像使用一個空集合的總和不會像期望的那樣評估,即0。我在這裏錯過了什麼嗎?

感謝您的幫助。

+0

什麼是生成的SQL? – svick

回答

5

問題是如果沒有記錄求和,SQL中的SUM返回null

你需要作弊一點點。

嘗試:

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

或寫在一點點不同的方式

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

+1;但我認爲你仍然需要爲第二種情況施加壓力才能使外部C#開心......? –

+0

@ MerlynMorgan-Graham,你是對的。 –

+0

感謝您的幫助,完美地工作。 – Peuge