c# – DataRow:按照给定的列名选择单元格值

我有一个DataRow的问题,我真的很努力。

使用OleDbConnection从Excel电子表格读入数据行。

如果我尝试使用列名称从DataRow中选择数据,即使存在数据,也会返回DBNull。

但这不是那么简单。

datarow.Table.Columns [5] .ColumnName返回“我的列”。
datarow [“我的列”]返回DBNull。
datarow [5]返回500。
datarow [datarow.Table.Columns [5] .ColumnName]返回DBNull。 (只是为了确保它不是打字错误!)

我可以使用列号从数据库中选择东西,但是我不喜欢这样做,因为如果列排序改变,软件会中断。

你使用哪个版本的.NET?自.NET 3.5以来,有一个汇编System.Data.DataSetExtensions,它包含了dataTables,dataRows等的各种有用的扩展。

你可以尝试使用

row.Field<type>("fieldName");

如果不行,可以这样做:

DataTable table = new DataTable();
var myColumn = table.Columns.Cast<DataColumn>().SingleOrDefault(col => col.ColumnName == "myColumnName");
if (myColumn != null)
{
    // just some roww
    var tableRow = table.AsEnumerable().First();
    var myData = tableRow.Field<string>(myColumn);
    // or if above does not work
    myData = tableRow.Field<string>(table.Columns.IndexOf(myColumn));
}
http://stackoverflow.com/questions/7119993/datarow-select-cell-value-by-a-given-column-name

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – DataRow:按照给定的列名选择单元格值