get index of DataTable column with name

asp.net, c#, datarow, datatable

Solution

You can use `DataColumn.Ordinal` to get the index of the column in the `DataTable`. So if you need the next column as mentioned use `Column.Ordinal + 1`:

row[row.Table.Columns["ColumnName"].Ordinal + 1] = someOtherValue;

Warning:

This code returns the next column, so the one after `ColumnName`, as requested in the question.

Problem

I have some code which sets the value of cells in a DataRow by column name i.e. ``` row["ColumnName"] = someValue; ``` I want to also set the value for this row in the column immediately to the right of the one found above. Clearly if I was getting the cell by index rather than by column name this would be easy. So is there a way of getting the column index from the column name thus allowing me to do: ``` row[index + 1] = someOtherValue; ``` i.e. do I need create some kind of dictionary of column index and column names when the table is initially created, or can I get the index from the column name later on without doing this?

Original source