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.

戻り値

0 から始まる列序数。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.

列名のみを使用していて、列名が user によって指定されていて、列から情報を取得する必要がある場合は、次のようなプロシージャを使用して必要な情報を抽出できます。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. 失敗した場合は、大文字小文字を区別しない検索が2回行われます。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

適用対象