将DataTable列查询到整数列表(或数组)中



我试图查询DataTable以获得与特定条件相对应的ID(整数(列表,这样我就可以将该列表解析为一个连接字符串,该字符串可以用作DataView:上的过滤器

Dim dvFilteredList As New DataView(dtbList)
Dim existingSelections = (From dtr In dtbMain.AsEnumerable
Where dtr.Field(Of String)("Field1") = strField1Value _
And dtr.Field(Of String)("Field2") = strField2Value _
And dtr.Field(Of String)("Field3") = strField3Value _
And Not IsDBNull(dtr.Field(Of Integer)("SomeID"))
Select New With {.SomeID = dtr.Field(Of Integer)("SomeID")}).ToList
Dim strViewFilter As String = "[SomeID] NOT IN (" & String.Join(",", existingSelections) & ")"
dvFilteredList.RowFilter = strViewFilter

当我试图将整数ID的列表查询到existingSelections中时,我得到了以下异常:

无法强制转换DBNull。类型为"System.Int32"的值。请使用可为null的类型。

如何将符合条件的ID查询到列表(或数组(中,然后进行解析?

Field扩展方法支持可为null的类型,因此请正确使用它:

AndAlso dtr.Field(Of Integer?)("SomeID").HasValue

(出于性能原因,也可以在任何地方使用AndAlso而不是And(

最新更新