获取带有名称的DataTable列的索引

And*_*ndy 42 c# asp.net datatable datarow

我有一些代码通过列名设置DataRow中的单元格的值,即

row["ColumnName"] = someValue;
Run Code Online (Sandbox Code Playgroud)

我还要将列中此行的值设置在上面找到的那一行的右侧.显然,如果我通过索引而不是按列名获取单元格,这将很容易.那么有没有办法从列名中获取列索引,从而允许我这样做:

row[index + 1] = someOtherValue;
Run Code Online (Sandbox Code Playgroud)

即,我是否需要在最初创建表时创建某种列索引和列名称的字典,或者我可以稍后从列名称中获取索引而不执行此操作?

Tim*_*ter 71

您可以使用DataColumn.Ordinal获取列中的索引DataTable.因此,如果您需要提到的下一列,请使用Column.Ordinal + 1:

row[row.Table.Columns["ColumnName"].Ordinal + 1] = someOtherValue;
Run Code Online (Sandbox Code Playgroud)

  • @Piers:但OP需要在另一列之后的下一列. (3认同)
  • 你不需要`+ 1`只是`row [row.Table.Columns ["ColumnName"].Ordinal] = someOtherValue;`会这样做. (2认同)

Kel*_*ell 32

试试这个:

int index = row.Table.Columns["ColumnName"].Ordinal;
Run Code Online (Sandbox Code Playgroud)

  • 虽然蒂姆打败了你,但我会把他标记为答案. (2认同)

ebr*_*lil 6

您只需使用DataColumnCollection.IndexOf即可

这样您就可以按名称获取所需列的索引,然后将其与行一起使用:

row[dt.Columns.IndexOf("ColumnName")] = columnValue;
Run Code Online (Sandbox Code Playgroud)