Linq to sql 没有记录的Linq到Sql求和

Linq to sql 没有记录的Linq到Sql求和,linq-to-sql,error-handling,sum,Linq To Sql,Error Handling,Sum,我正在创建一个方法来收集整个月的累计总数。问题是,在给定的月份,某些项目可能没有费用,因此不会返回任何行 我可以看出在没有数据的情况下这将如何出错: double fuelCost = (double)(from a in db.EquipmentFuelLogs where a.wdEquipmentMainGeneralOID == vehicleKey &&

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

我可以看出在没有数据的情况下这将如何出错:

double fuelCost = (double)(from a in db.EquipmentFuelLogs
                           where a.wdEquipmentMainGeneralOID == vehicleKey &&    
                                (monthBeginDate < a.Date1 && a.Date1 < monthEndDate)
                           select a.TotalCost).Sum();
double fuelCost=(double)(来自db.EquipmentFuelogs中的a)
其中a.wdEquipmentMainGeneralOID==车辆钥匙&&
(月底

检测当月无燃油交易并将燃油成本设置为0的最佳方法是什么?试着接球?谈到了问题,但没有解决办法。

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

问题是因为where没有返回序列,因此求和无法工作,但是如果在求和之前使用
.DefaultIfEmpty
,则它可以正常工作

decimal? orderValue = 
    orders.Where(ee => ee.Name == "SomeName").DefaultIfEmpty().Sum(s => s.OrderCost);
希望这有帮助。

我决定:

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

下次需要时,我将尝试此操作。请参见。选择(a=>(double?)a.TotalCost.Sum();