2012-05-30 30 views
15

我遇到了此查询存在的问题,它引发错误。由于物化值为空导致值类型'Decimal'失败

var TotalToDatePayable = ( from ori in db.GetAll<WMPORI>() 
          where ori.CTMSysID == ctmSysId 
          select ori.ExB4Taxes).Sum(); 

我尝试下面的代码从another similar question但这并没有解决我的问题:

var TotalToDatePayable = (Decimal?)( from ori in db.GetAll<WMPORI>() 
             where ori.CTMSysID == ctmSysId 
            select ori.ExB4Taxes).Sum()) ?? 0; 
+0

这是工作的:var TotalToDatePayable =(从ORI在db.GetAll () 其中ori.CTMSysID == ctmSysId 选择ori.ExB4Taxes).DefaultIfEmpty(0).SUM(); – Developer

+0

@DmitryBychenko我认为那种缩进是Objective C的专有。现在我很伤心。 – Rawling

+0

@Rawling 9:这种缩进在SQL中是典型的(Linq在这个问题中模拟的)。这是我添加空格的原因。 –

回答

23

你需要投ori.ExB4Taxesdecimal?查询里面。

var TotalToDatePayable = (from ori in db.GetAll<WMPORI>() 
          where ori.CTMSysID == ctmSysId 
          select (Decimal?) ori.ExB4Taxes).Sum() ?? 0; 
+0

您只需要在查询开头添加更多的括号,而不是其工作完美。谢谢。 – Developer

相关问题