我正在创建一个收集整个月累计总数的方法。问题是某个月内某些项目可能没有收费,因此不会返回任何行。
我可以看到没有数据会出现这种错误:
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谈到了这个问题,但没有解决方案。
答案 0 :(得分:15)
问题是因为返回的地方没有序列,因此总和不起作用,但是如果你在总和之前使用.DefaultIfEmpty
就可以了。
decimal? orderValue =
orders.Where(ee => ee.Name == "SomeName").DefaultIfEmpty().Sum(s => s.OrderCost);
希望这有帮助。
答案 1 :(得分:5)
我解决了:
decimal orderValue = orders.Where(ee => ee.Name == "SomeName").Sum(s => (decimal?)s.OrderCost)??0;
答案 2 :(得分:-10)
我添加了一个捕获来捕获错误。我从未找到过不同的解决方案。