C# OleDbDataAdapter进入双精度C列表
如果OleDbDataAdapter对象只包含下图所示的一列,是否可以将该对象解析为double列表 我想解析excel文件中的值,然后用foreach和if循环检查列表中的所有值。有人能帮我检查一下OleDbDataAdapter,或者更好地将它转换成双工列表吗 包含OleDbDataAdapter对象中的值的列如下所示。它几乎没有空字段和一堆双精度值 OleDbDataAdapter的定义如下:C# OleDbDataAdapter进入双精度C列表,c#,excel,list,oledbdataadapter,C#,Excel,List,Oledbdataadapter,如果OleDbDataAdapter对象只包含下图所示的一列,是否可以将该对象解析为double列表 我想解析excel文件中的值,然后用foreach和if循环检查列表中的所有值。有人能帮我检查一下OleDbDataAdapter,或者更好地将它转换成双工列表吗 包含OleDbDataAdapter对象中的值的列如下所示。它几乎没有空字段和一堆双精度值 OleDbDataAdapter的定义如下: string pathConnection = "Provider=Microsoft.Jet.
string pathConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";";
OleDbConnection connection = new OleDbConnection(pathConnection);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select [max t] from [DAYTIME CONFORT INDEX$]", connection);
在这种情况下使用OleDbDataReader似乎更方便
List<double> numbers = new List<double>();
string pathConnection = "....";
using(OleDbConnection connection = new OleDbConnection(pathConnection))
using(OleDbCommand cmd = new OleDbCommand("Select [max t] from [DAYTIME CONFORT INDEX$]", connection))
{
connection.Open();
using(OleDbDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
if(!reader.IsDBNull(0))
numbers.Add(Convert.ToDouble(reader[0]));
}
}
}
使用OleDbDataAdapter,您必须加载一个DataTable/Dataset来检索您的值,然后再次在DataTable上循环以转换double列表中的单个列。感谢这完全完成了工作:感谢您的响应,出了问题。我得到一个例外,说max t列不存在,但第二个答案帮助我,所以一切都很好
DataTable dt =new DataTable();;
myDataAdapter.Fill(dt);
List<double> numbers= dt.AsEnumerable()
.Select(r => r.Field<double?>("[max t]"))
.ToList();