DataTableReader.GetOrdinal(String) Метод

Определение

Получает порядковый номер столбца с именем столбца.

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

Имя столбца.

Возвращаемое значение

Порядковый номер столбца от нуля.

Исключения

Предпринята попытка считывания или доступа к столбцу в закрытом DataTableReader.

Указанное имя не является допустимым именем столбца.

Примеры

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

GetOrdinal сначала выполняет поиск с учетом регистра. При сбое выполняется второй поиск без учета регистра. Если номер столбца не найден ArgumentException , создается исключение.

GetOrdinal не учитывает ширину kana.

Так как порядковые подстановки более эффективны, чем именованные подстановки, неэффективны для вызова GetOrdinal в цикле. Сэкономить время, вызвав GetOrdinal один раз и назначив результаты целочисленной переменной для использования в цикле.

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