Я пытаюсь проверить, существует ли столбец в datarow, прежде чем привязывать его, но свойство column.contains не работает. Не знаю, чего мне здесь не хватает.Как проверить, существует ли столбец в Datarow
Вот код:
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)
У меня есть два других решения, и это может помочь другим.
Альтернативное решение I:
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)
Альтернативное решение II:
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