Lea*_*ner 4 linq vb.net linq-to-objects linq-to-entities
我有这个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)
Run Code Online (Sandbox Code Playgroud)
如果/ iif在select中,我有什么方法可以使用吗?
[这是对问题评论中讨论的总结.]
您的代码将不起作用,因为IIf始终评估true和false部分.因此,评估d.Field(Of Object)(_Col4)将引发异常,如果_Col4 = -1.
相反,use If(condition, true, false),就像C#的condition ? true : false运算符一样,只根据条件计算true或false部分.所以,你的代码应该是:
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)
Run Code Online (Sandbox Code Playgroud)