按列名称的数据行

use*_*545 2 .net vb.net datatable datarow

我正在使用此代码:

Dim dr() As DataRow = datatable.Select("id='" & st)
For i = 0 To dr.GetUpperBound(0)
    result = dr(i)(2).ToString()
Next i
Run Code Online (Sandbox Code Playgroud)

如何通过列名而不是dr(i)(2)?获得结果?因为如果我在前面的那个数据表中添加一列,那么我得到错误的数据,我应该使用dr(i)(3).所以我想在未改变源代码的情况下克服这个问题.就像是dr(i)("column_name").ToString()

Neo*_*isk 8

就像你写的那样:

dr(i)("column_name").ToString()
Run Code Online (Sandbox Code Playgroud)

MSDN参考:

对于其他类型的强类型值(例如,Integer,您可以使用Field(Of T)扩展名):

在你的情况下,

dr(i).Field(Of String)("column_name")
Run Code Online (Sandbox Code Playgroud)