我有这个LINQ语句
Dim Demo = From d In DBDataTable.AsEnumerable _
Select id = d.Field(Of Integer)("id"), _
Column = d.Field(Of Object) (_column2), _
Col3 = d.Field(Of Object)(_column3), _
Col4 = IIf(_Col4 <> -1, d.Field(Of Object)(_Col4), Nothing)
如果/ iif在select中,我有什么方法可以使用吗?
答案 0 :(得分:7)
[这是问题评论中讨论的摘要。]
由于IIf
始终评估 true 和 false 部分,因此您的代码无效。因此,评估d.Field(Of Object)(_Col4)
会引发_Col4 = -1
的异常。
相反,使用If(condition, true, false)
,它就像C#的condition ? true : false
运算符一样,只评估 true 或 false 部分,具体取决于< EM>条件。所以,你的代码应该是:
Dim Demo = From d In DBDataTable.AsEnumerable _
Select id = d.Field(Of Integer)("id"), _
Col2 = d.Field(Of Object)(_column2), _
Col3 = d.Field(Of Object)(_column3), _
Col4 = If(_Col4 <> -1, d.Field(Of Object)(_Col4), Nothing)