我想在綁定它之前檢查數據行中是否存在列,但column.contains屬性不起作用。不知道我在這裏錯過了什麼。如何檢查數據列中是否存在列
下面是代碼:
Private Sub Bind(ByRef reader As SqlDataReader)
Dim dt As DataTable = reader.GetSchemaTable
list = New List(Of Employees)
For Each r As DataRow In dt.Rows
BindObject(r)
list.Add(obj)
Next
End Sub
Private Sub BindObject(ByRef dr As DataRow)
obj = New Employees
If dr.Table.Columns.Contains("ID") Then obj.VisitID = CType(dr("ID"), Integer)
End Sub
解決方案:
由@ajakblackgoat提供該解決方案如下工作絕對沒問題。
If dt.Select("ColumnName='ID'").Count = 1 Then obj.VisitID = CType(dr("ID"), Integer)
我想出了其他兩種解決方案,它可以幫助別人。
替代的解決方案我:
Dim dt As DataTable = reader.GetSchemaTable
Dim columns = New List(Of String)()
For i As Integer = 0 To reader.FieldCount - 1
columns.Add(reader.GetName(i))
Next
If columns.Contains("ID") Then obj.ID = CType(dr("ID"), Integer)
替代的解決方案二:
Dim dt As New DataTable
dt.Load(reader)
If dr.Table.Columns.Contains("ID") Then obj.VisitID = CType(dr("ID"), Integer)
對於初學者來說,你不發表您的'BindObjectV2'方法。這似乎與你的問題有關。 –
謝謝你的更正。 – user1263981
'Columns.Contains'工作正常,不區分大小寫。你是否存在這樣的專欄?嘗試調試你的代碼。 – Magnus