2010-03-02 110 views
8

我正在創建一個方法,在整個月中收集累計總計。問題在於某個月的某些項目可能沒有收費,因此不會返回任何行。Linq到Sql總和沒有記錄

我可以看到如何做到這一點,沒有數據錯誤:

double fuelCost = (double)(from a in db.EquipmentFuelLogs 
          where a.wdEquipmentMainGeneralOID == vehicleKey &&  
           (monthBeginDate < a.Date1 && a.Date1 < monthEndDate) 
          select a.TotalCost).Sum(); 

什麼是檢測該月沒有成交燃料和燃料成本爲0的最佳方法?只是嘗試抓住? This article談到了這個問題,但沒有解決方案。

+1

看到http://stackoverflow.com/a/2456670/463425 。選擇(A =>(雙)a.TotalCost?).SUM(); – tkerwood 2012-10-05 00:24:39

回答

-10

我添加了一個catch來捕獲錯誤。我從未找到過不同的解決方案。

15

問題是因爲哪裏沒有返回順序,因此總和無法正常工作,但是如果在總和工作正常之前使用了.DefaultIfEmpty

decimal? orderValue = 
    orders.Where(ee => ee.Name == "SomeName").DefaultIfEmpty().Sum(s => s.OrderCost); 

希望這會有所幫助。

+0

我會在下次嘗試這個時候需要這樣做。 – 2010-05-26 15:17:56

+3

不適用於Linq to SQL – jeromeyers 2014-12-29 16:49:22

5

我解決:

decimal orderValue = orders.Where(ee => ee.Name == "SomeName").Sum(s => (decimal?)s.OrderCost)??0;