DataTableReader.GetOrdinal(String) Метод

Определение

Возвращает порядковый номер столбца при наличии заданного имени столбца.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

Параметры

name
String

Имя столбца.The name of the column.

Возвраты

Порядковый номер столбца (от нуля).The zero-based column ordinal.

Исключения

Предпринята попытка чтения или доступа к столбцу закрытого объекта DataTableReader.An attempt was made to read or access a column in a closed DataTableReader.

Заданное имя недопустимо для имени столбца.The name specified is not a valid column name.

Примеры

Если имеется только имя столбца, в этом случае имя столбца указывается пользователем и необходимо получить сведения из столбца, для извлечения необходимых сведений можно использовать следующую процедуру, подобную приведенной ниже.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. В этом примере процедура принимает имя столбца и возвращает данные, содержащиеся в этом столбце, для текущей строки в DataTableReader :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

Комментарии

Так как большинство методов, предоставляемых DataTableReader классом, должны быть предоставлены с порядковым номером столбца, можно GetOrdinal использовать метод для получения номера столбца с учетом имени столбца.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сначала выполняет поиск с учетом регистра.GetOrdinal performs a case-sensitive lookup first. В случае сбоя выполняется второй Поиск без учета регистра.If it fails, a second case-insensitive search is made. Если номер столбца не найден IndexOutOfRangeException , создается исключение.If the column number is not found an IndexOutOfRangeException is thrown.

GetOrdinalне учитывается ширина японской азбуки.GetOrdinal is kana-width insensitive.

Поскольку уточняющие запросы более эффективны, чем имена уточняющих запросов, вызов GetOrdinal в цикле неэффективен.Because ordinal-based lookups are more efficient than named lookups, it is inefficient to call GetOrdinal within a loop. Сэкономьте время, вызвав GetOrdinal один раз и назначив результаты целочисленной переменной для использования в цикле.Save time by calling GetOrdinal one time and assigning the results to an integer variable for use within the loop

Применяется к