我有这个查询为linq:
Dim result = (From c In query _
Where Not bannedCCList.Contains(c.num_reserv) _
Group c By c.code_operation, c.code_type _
Into nbr = Count(CInt(c.Code_bien)), acmp = Sum(CDec(c.TotalAcomp)) _
Select nbr, acmp).ToList
但我得到错误:
允许Null的对象必须具有值
我如何放acmp=0 if c.TotalAcomp is nothing
我的查询如下:
acmp =IIF(Sum(CDec(c.TotalAcomp)) is nothing,0, Sum(CDec(c.TotalAcomp)) _
但它不起作用。
答案 0 :(得分:0)
试试这个:
acmp =IIF(Sum(CDec(c.TotalAcomp)) is DBNull.Value,0, Sum(CDec(c.TotalAcomp))
答案 1 :(得分:0)
不要使用IIF。它是旧的VB6垃圾,例如即使真实部分返回true,它也始终评估双方。请改用If。
检查变量是否在错误的地方发生。你不得不在Sum
函数中检查它。
还可以使用可空类型的HasValue
和Value
属性。
在这种情况下,您不必强制转换任何表达式(除了您转换为错误的类型。如果您的变量类型为Double
,请不要转换为Decimal
)。
以下代码对我有用:
acmp = Sum(If(Not c.TotalAcomp.HasValue, 0, c.TotalAcomp.Value))