0

如果该对象仅包含下图中显示的一个列,是否可以将 OleDbDataAdapter 对象解析为双精度列表?

我想从 excel 文件中解析值,然后我想用foreachif循环检查列表中的所有值。有人可以帮助我通过 OleDbDataAdapter 甚至更好地将其转换为双打列表。

具有 OleDbDataAdapter 对象中的值的列如下所示。它有几个空字段和一堆双值。

在此处输入图像描述

OleDbDataAdapter 是这样定义的:

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);
4

2 回答 2

1

在这种情况下使用 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]));
          }
      }
 }

使用 anOleDbDataAdapter您必须加载 aDataTable/Dataset以检索您的值,然后再次循环遍历数据表以转换 double 列表中的单列

于 2014-04-04T17:48:08.427 回答
0
DataTable dt =new DataTable();;

myDataAdapter.Fill(dt);

List<double> numbers= dt.AsEnumerable()
                         .Select(r => r.Field<double?>("[max t]"))
                         .ToList();
于 2014-04-04T17:54:53.820 回答