DataTableReader.GetOrdinal(String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在给定列名时获取相应的列序号。
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
首先执行区分大小写的查找。 如果失败,则进行第二次不区分大小写的搜索。 如果未找到 IndexOutOfRangeException
列号,则会引发 。
GetOrdinal
不区分假名宽度。
因为基于序号的查找比命名查找更高效,因此在循环内调用 GetOrdinal
效率低下。 通过调用 GetOrdinal
一次并将结果分配给整数变量以在循环中使用来节省时间