我有以下ASP.NET(VB)代码:
strLocation = CStr(q1("LocationName")) + " " + CStr(q1("LocationAddress")) + " " + CStr(q1("LocationCity"))
由于LocationCity为null:
我从类型' DBNull'获得转换。输入' String'无效。
有没有办法解决这个问题。
如果它只是LocationCity,我可能会做类似的事情:
If IsDBNull(q1("LocationCity")) Then
strLocation = ""
Else
strLocation = CStr(q1("LocationCity"))
End If
我也尝试过:
strLocation = If(CStr(q1("LocationName")), "") + " " + If(CStr(q1("LocationAddress")), "") + " " + If(CStr(q1("LocationCity")), "")
但得到了相同的结果
在C#中我通常会使用??但不确定ASP.NET VB中的最佳方法
答案 0 :(得分:9)
与VB.NET中的C#??
相当的是IF Operator
strLocation = If(IsDBNull(q1("LocationCity")), "", CStr(q1("LocationCity")))
请勿使用IIF Function ,因为它已被弃用,不支持短路且不是类型安全的。
答案 1 :(得分:2)
您可以使用If(IsDBNull(q1("propertyName")), "", CStr(q1("propertyName")))
或者您可以实现您作为方法显示的代码块,并为每个属性调用该方法。 IMO,它会使您的代码行比使用3个IIF语句更清晰
Function StringValue(q1 as Q1Type) as String
If IsDBNull(q1("LocationCity")) Then
Return ""
Else
Return CStr(q1("LocationCity"))
End If
End Function
strLocation = StringValue(q1("LocationName")) + " " + StringValue(q1("LocationAddress")) + " " + StringValue(q1("LocationCity"))