我确实遇到了DataRow的问题。
使用OleDbConnection从Excel电子表格中读取数据行。
如果我尝试使用列名从DataRow中选择数据,即使那里有数据,它也会返回DBNull。
但这不是那么简单。datarow.Table.Columns[5].ColumnName
返回“我的专栏”。datarow["my column"]
返回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));
}
关于c# - DataRow:通过给定的列名称选择单元格值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7119993/