0

OleDbDataAdapter オブジェクトに下の図に示す列が 1 つしか含まれていない場合、そのオブジェクトを double のリストに解析することは可能ですか?

Excelファイルから値を解析したいのですが、その後、リスト内のすべての値をforeachandifループでチェックしたいと思います。誰かが OleDbDataAdapter を通過するか、それを double のリストに変換するのを手伝ってくれますか?

OleDbDataAdapter オブジェクトにある値を持つ列は次のようになります。空のフィールドがほとんどなく、double 値がたくさんあります。

ここに画像の説明を入力

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]));
          }
      }
 }

を使用するOleDbDataAdapterと、 a をロードしDataTable/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 に答える