it-swarm.com.de

Wie finde ich heraus, ob eine Spalte in einer VB.Net DataRow vorhanden ist?

Ich lese eine XML-Datei in ein DataSet und muss die Daten aus dem DataSet abrufen. Da es sich um eine vom Benutzer bearbeitbare Konfigurationsdatei handelt, können die Felder vorhanden sein oder nicht. Um mit fehlenden Feldern gut umzugehen, möchte ich sicherstellen, dass jede Spalte in der DataRow existiert und nicht DBNull ist.

Ich überprüfe bereits, ob DBNull vorhanden ist, kann aber nicht sicherstellen, dass die Spalte vorhanden ist, ohne eine Ausnahme auszulösen oder eine Funktion zu verwenden, die alle Spaltennamen durchläuft. Was ist die beste Methode, um dies zu tun?

51
Bryan Anderson

DataRows sind in der Weise nett, dass sie ihre zugrunde liegende Tabelle mit ihnen verknüpft haben. Mit der zugrunde liegenden Tabelle können Sie überprüfen, ob eine bestimmte Zeile eine bestimmte Spalte enthält.

    If DataRow.Table.Columns.Contains("column") Then
        MsgBox("YAY")
    End If
158
John Chuckran

Mit DataSet.Tables(0).Columns.Contains(name) können Sie prüfen, ob das DataTable eine Spalte mit einem bestimmten Namen enthält.

17
Phillip Wells

Eine andere Möglichkeit, herauszufinden, ob eine Spalte vorhanden ist, besteht darin, nach Nothing dem Wert zu suchen, der vom Indexer der Columns - Auflistung zurückgegeben wird, wenn der Spaltenname an diese übergeben wird:

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

Dieser Ansatz ist möglicherweise dem vorzuziehen, der die Contains("ColumnName") -Methode verwendet, wenn der folgende Code anschließend DataColumn für die weitere Verwendung abrufen muss. Beispielsweise möchten Sie möglicherweise wissen, für welchen Typ ein Wert in der Spalte gespeichert ist:

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

In diesem Fall erspart Ihnen dieser Ansatz einen Aufruf von Contains("ColumnName") und macht Ihren Code ein bisschen sauberer.

2