Как узнать, существует ли столбец в VB.Net DataRow - PullRequest
50 голосов
/ 07 октября 2008

Я читаю XML-файл в DataSet и мне нужно получить данные из DataSet. Так как это редактируемый пользователем файл конфигурации, поля могут быть или не быть там. Чтобы хорошо обрабатывать пропущенные поля, я хотел бы убедиться, что каждый столбец в DataRow существует и не является DBNull.

Я уже проверяю DBNull, но не знаю, как убедиться, что столбец существует, не вызывая исключения или используя функцию, которая перебирает все имена столбцов. Какой лучший способ сделать это?

Ответы [ 4 ]

153 голосов
/ 07 октября 2008

DataRow хороши тем, что к ним привязана основная таблица. С помощью базовой таблицы вы можете убедиться, что в конкретной строке есть определенный столбец.

    If DataRow.Table.Columns.Contains("column") Then
        MsgBox("YAY")
    End If
17 голосов
/ 07 октября 2008

Вы можете использовать DataSet.Tables(0).Columns.Contains(name), чтобы проверить, содержит ли DataTable столбец с определенным именем.

2 голосов
/ 04 декабря 2015

Другой способ выяснить, существует ли столбец, - проверить значение Nothing, возвращаемое индексатором коллекции Columns при передаче имени столбца:

If dataRow.Table.Columns("ColumnName") IsNot Nothing Then
    MsgBox("YAY")
End If

Этот подход может быть предпочтительнее, чем тот, который использует метод Contains("ColumnName"), когда следующий код впоследствии должен будет получить этот DataColumn для дальнейшего использования. Например, вы можете узнать, какой тип имеет значение, хранящееся в столбце:

Dim column = DataRow.Table.Columns("ColumnName")
If column IsNot Nothing Then
    Dim type = column.DataType
End If

В этом случае этот подход экономит вам вызов Contains("ColumnName"), в то же время делая ваш код немного чище.

0 голосов
/ 07 октября 2008

Вы можете инкапсулировать свой блок кода с помощью оператора try ... catch, и когда вы запустите свой код, если столбец не существует, он выдаст исключение. Затем вы можете выяснить, какое конкретное исключение оно выдает, и при желании обработать это конкретное исключение другим способом, например, вернуть «Столбец не найден».

...