Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OleDbDataAdapter进入双精度C列表_C#_Excel_List_Oledbdataadapter - Fatal编程技术网

C# OleDbDataAdapter进入双精度C列表

C# OleDbDataAdapter进入双精度C列表,c#,excel,list,oledbdataadapter,C#,Excel,List,Oledbdataadapter,如果OleDbDataAdapter对象只包含下图所示的一列,是否可以将该对象解析为double列表 我想解析excel文件中的值,然后用foreach和if循环检查列表中的所有值。有人能帮我检查一下OleDbDataAdapter,或者更好地将它转换成双工列表吗 包含OleDbDataAdapter对象中的值的列如下所示。它几乎没有空字段和一堆双精度值 OleDbDataAdapter的定义如下: string pathConnection = "Provider=Microsoft.Jet.

如果OleDbDataAdapter对象只包含下图所示的一列,是否可以将该对象解析为double列表

我想解析excel文件中的值,然后用foreach和if循环检查列表中的所有值。有人能帮我检查一下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);

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