Linq到Sql Sum没有记录

时间:2010-03-02 20:12:24

标签: linq-to-sql error-handling sum

我正在创建一个收集整个月累计总数的方法。问题是某个月内某些项目可能没有收费,因此不会返回任何行。

我可以看到没有数据会出现这种错误:

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谈到了这个问题,但没有解决方案。

3 个答案:

答案 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)

我添加了一个捕获来捕获错误。我从未找到过不同的解决方案。