开发者

Linq to Sql Sum with no records

I am creating a method that collects accumulated totals throughout the month. The problem is that there may开发者_如何学Go not be charges for some of the items in a given month so no rows would be returned.

I can see how this would error with no data:

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

What is the best approach to detect no fuel transactions for that month and set the fuel cost to 0? Just do a try catch? This article spoke of the problem but no solution.


The issue is because the where is returning no sequence therefor the sum cannot work, however if you use .DefaultIfEmpty before the sum it works fine.

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

Hope this helps.


I resolved:

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


I added a catch to catch the error. I never found a different solution.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜