[Это краткое изложение обсуждения в комментариях к вопросу.]
Ваш код не будет работать, поскольку IIf
всегда оценивает обе части: true и false . Таким образом, оценка d.Field(Of Object)(_Col4)
вызовет исключение, если _Col4 = -1
.
Вместо этого используйте If(condition, true, false)
, который работает как оператор C # 1015 * и оценивает только часть 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)