次の方法で共有


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

列の名前。

戻り値

0 から始まる列序数。

例外

閉じている 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 は、まず大文字と小文字を区別して参照を実行します。 失敗した場合、次に大文字と小文字を区別せずに検索が行われます。 列番号が見つからない場合は、 IndexOutOfRangeException がスローされます。

GetOrdinal では、カタカナの全角と半角が区別されません。

序数に基づく参照は名前による参照よりも効率的であるため、ループ内で GetOrdinal を呼び出すのは非効率的です。 1 回呼び出 GetOrdinal し、ループ内で使用する整数変数に結果を割り当てることで時間を節約する

適用対象