2017-11-15 9 views
0

다른 여러 데이터를 병합하여 만든 데이터는 원래 가져온 Excel 파일에서 가져옵니다. 열과 이름의 양은 미리 알 수 없지만 처음 두 열은 항상 무시되지만 기본적으로 값의 열이 있습니다.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'에서 변환 할 수 없습니다.

저는 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

변환 된 값을 두 번째 줄로 전달하면 코드가'var d = Convert.ToDouble (j [i]); series.Append (x ++, d);' –

답변

0

표시되는 오류는 double을 예상 할 때 serial.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"]);