DataTableReader.GetOrdinal(String) Methode

Definition

Ruft bei angegebenem Spaltennamen die Ordnungszahl der Spalte ab.Gets the column ordinal, given the name of the column.

public:
 override int GetOrdinal(System::String ^ name);
public override int GetOrdinal (string name);
override this.GetOrdinal : string -> int
Public Overrides Function GetOrdinal (name As String) As Integer

Parameter

name
String

Der Name der Spalte.The name of the column.

Gibt zurück

Die nullbasierte Ordnungszahl der Spalte.The zero-based column ordinal.

Ausnahmen

Es wurde versucht, eine Spalte in einem geschlossenen DataTableReader zu lesen oder darauf zuzugreifen.An attempt was made to read or access a column in a closed DataTableReader.

Der angegebene Name ist kein gültiger Spaltenname.The name specified is not a valid column name.

Beispiele

Wenn Sie nur einen Spaltennamen haben, in diesem Fall der Spaltenname vom Benutzer angegeben ist, und Sie Informationen aus der Spalte abrufen müssen, können Sie eine Prozedur wie die folgende verwenden, um die erforderlichen Informationen zu extrahieren.If you have only a column name, in which case the column name is user supplied, and you must retrieve information from the column, you can use a procedure like the following to extract the required information. In diesem Beispiel akzeptiert die Prozedur einen Spaltennamen und gibt die Daten zurück, die in dieser Spalte für die aktuelle Zeile in der DataTableReader enthalten sind:In this example, the procedure accepts a column name and returns the data that is contained within that column for the current row in the DataTableReader :

private static object GetValueByName(
    DataTableReader reader, string columnName)
{
    // Consider when to use a procedure like this one carefully:
    // if you're going to retrieve information from a column
    // in a loop, it would be better to retrieve the column
    // ordinal once, store the value, and use the methods
    // of the DataTableReader class directly. 
    object columnValue;

    try
    {
        int columnOrdinal = reader.GetOrdinal(columnName);
        columnValue = reader.GetValue(columnOrdinal);
    }
    catch (ArgumentException ex)
    {
        // Throw all other errors back out to the caller.
        columnValue = null;
    }
    return columnValue;
}

Private Function GetValueByName( _
   ByVal reader As DataTableReader, _
   ByVal columnName As String) As Object

   ' Consider when to use a procedure like this one carefully:
   ' If you're going to retrieve information from a column
   ' in a loop, it would be better to retrieve the column
   ' ordinal once, store the value, and use the methods
   ' of the DataTableReader class directly. 
   Dim columnValue As Object

   Try
      Dim columnOrdinal As Integer = reader.GetOrdinal(columnName)
      columnValue = reader.GetValue(columnOrdinal)
   Catch ex As ArgumentException
      ' Throw all other errors back out to the caller.
      columnValue = Nothing
   End Try
   Return columnValue
End Function

Hinweise

Da die meisten der Methoden, die von der DataTableReader-Klasse bereitgestellt werden, mit einer ordinalspaltennummer bereitgestellt werden müssen, können Sie die Spaltennummer mithilfe der GetOrdinal-Methode abrufen, wenn der Name der Spalte angegeben ist.Because most of the methods provided by the DataTableReader class must be provided with an ordinal column number, you can use the GetOrdinal method to retrieve the column number, given the name of the column.

GetOrdinal führt zuerst eine Suche mit Berücksichtigung der Groß-und Kleinschreibung durch.GetOrdinal performs a case-sensitive lookup first. Bei einem Fehler wird eine zweite Suche ohne Beachtung der Groß-/Kleinschreibung durchgeführt.If it fails, a second case-insensitive search is made. Wenn die Spaltennummer nicht gefunden wird, wird ein IndexOutOfRangeException ausgelöst.If the column number is not found an IndexOutOfRangeException is thrown.

GetOrdinal ist eine nicht-Breite von Kana.GetOrdinal is kana-width insensitive.

Da ordinalbasierte Suchvorgänge effizienter als benannte suchen sind, ist es ineffizient, GetOrdinal innerhalb einer Schleife aufzurufen.Because ordinal-based lookups are more efficient than named lookups, it is inefficient to call GetOrdinal within a loop. Sparen Sie Zeit, indem Sie GetOrdinal einmal aufrufen und die Ergebnisse einer ganzzahligen Variablen zur Verwendung innerhalb der Schleife zuweisen.Save time by calling GetOrdinal one time and assigning the results to an integer variable for use within the loop

Gilt für: