我正在嘗試查詢 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”的值。請使用可為空的型別。
如何將合格 ID 查詢到我可以決議的串列(或陣列)中?
uj5u.com熱心網友回復:
Field擴展方法支持可空型別,所以要正確使用:
AndAlso dtr.Field(Of Integer?)("SomeID").HasValue
(出于性能原因,也使用AndAlso而不是到處使用)And
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510633.html
