Linq到Sql Sum没有记录

Mik*_*lls 9 error-handling sum linq-to-sql

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

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

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

检测当月没有燃料交易并将燃料成本设定为0的最佳方法是什么?试试看吧?本文谈到了这个问题,但没有解决方案.

小智 15

问题是因为返回的地方没有序列,因此总和不能起作用,但是如果你.DefaultIfEmpty在总和之前使用它就可以正常工作.

decimal? orderValue = 
    orders.Where(ee => ee.Name == "SomeName").DefaultIfEmpty().Sum(s => s.OrderCost);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Jua*_*lez 5

我解决了:

decimal orderValue = orders.Where(ee => ee.Name == "SomeName").Sum(s => (decimal?)s.OrderCost)??0;
Run Code Online (Sandbox Code Playgroud)


Mik*_*lls -10

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