获得与名称的DataTable列的索引(get index of DataTable column

2019-06-26 01:44发布

我有一些代码,其通过柱名即设置在一个DataRow细胞的值

row["ColumnName"] = someValue;

我也想立即设置此行的值列上面发现了一个右侧。 显然,如果我得到的指数,而不是按列名的单元,这将是很容易。 那么,有没有从列名获取列索引从而使我做的一种方式:

row[index + 1] = someOtherValue;

即是否需要建立某种形式的最初创建表列索引和列名的词典,或者我可以从列名的索引以后不这样做呢?

Answer 1:

您可以使用DataColumn.Ordinal获得在列的索引DataTable 。 所以,如果你需要的下一列提到使用Column.Ordinal + 1

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


Answer 2:

试试这个:

int index = row.Table.Columns["ColumnName"].Ordinal;


Answer 3:

你可以简单地使用DataColumnCollection.IndexOf

所以,你可以通过名字得到所需要的列的索引,然后用你的行使用它:

row[dt.Columns.IndexOf("ColumnName")] = columnValue;


Answer 4:

我写的DataRow的扩展方法,通过列名获取我的对象。

public static object Column(this DataRow source, string columnName)
{
    var c = source.Table.Columns[columnName];
    if (c != null)
    {
        return source.ItemArray[c.Ordinal];
    }

    throw new ObjectNotFoundException(string.Format("The column '{0}' was not found in this table", columnName));
}

而其称为是这样的:

DataTable data = LoadDataTable();
foreach (DataRow row in data.Rows)
{        
    var obj = row.Column("YourColumnName");
    Console.WriteLine(obj);
}


文章来源: get index of DataTable column with name