I am creating a method that collects accumulated totals throughout the month. The problem is that there may 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;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With