2017-11-15 8 views
0

私はdatatableを複数の他のものをマージして作成しました。データはもともとインポートされたExcelファイルに由来します。私は基本的に値の列を持っていますが、列と名前の量はあらかじめわかっていませんが、最初の2つの列は常に無視されます。xydataseriesにdatatableのネストされたforeach

datatableの各列にxydataseries<double, double>()を作成しようとしています。 xは1から増分する整数で、yは列データです。私はクリックイベント(wpf)でこれを試しました。

private void btn_Click(object sender, RoutedEventArgs e) 
    { 
     foreach (DataColumn i in dt.Columns) 
     { 
      var x = 1; 
      var series = new XyDataSeries<double, double>(); 
      foreach (DataRow j in dt.Rows) 
      { 
       Convert.ToDouble(j); 
       series.Append(x++,j); 
      } 
     } 
    } 

しかし、最後の行にエラーが表示されます。jでは 'System.Data.DataRow'から 'double'に変換できません。

私はC#とプログラミングの新機能です。ご協力いただきありがとうございます。

+0

使用 '' Jのいずれかを使用してこの値を取得することができます[i] ''セルにアクセスする。 https://msdn.microsoft.com/en-us/library/5akhx035(v=vs.110).aspx - これはdoubleに変換することができます。 –

+0

これを行うと「オブジェクトから倍精度に変換できません」というエラーが発生します。 - Convert.ToDouble(j [i]); series.Append(one ++、j [i]); –

+0

変換された値を2行目に渡す必要があります。コードを 'var d = Convert.ToDouble(j [i]); series.Append(x ++、d); ' –

答えて

0

表示されているエラーは、double型を予期しているときに、series.AppendのパラメータとしてDataRowオブジェクトを渡した結果です。 Convert.ToDouble を返します。これは、結果を新しい変数に代入して使用する必要があることを意味します。元のj変数は変更されません。あなたが行う必要があり、二重取得するには:Convert.ToDoubleのみ(のDataRowにはない)IConvertibleインターフェイスを実装するオブジェクトで動作するため

double newDouble = Convert.ToDouble(j);

をただし、これはエラーになります。 DataRow内の値は、あなたが実際に後には何かであると仮定すると、あなたは列のインデックス

double newDouble = Convert.ToDouble(j[2]);

または列名によって

double newDouble = Convert.ToDouble(j["ColumnName"]);

関連する問題