我有一个datatable
,它是通过合并多个其他人创建的,数据最初来自导入的Excel文件。我基本上有值的列,虽然列和名称的数量是事先未知的,前两列总是被忽略。
我尝试为xydataseries<double, double>()
的每一栏创建一个datatable
; 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的最后一行收到错误 - 无法转换为&#39; System.Data.DataRow&#39;到&#39;加倍&#39;。
我是c#和编程的新手,谢谢你的帮助。
答案 0 :(得分:0)
您看到的错误是将DataRow对象作为参数传递给series.Append的结果,当它期望double时。这是因为Convert.ToDouble 返回一个double,这意味着您必须将结果分配给新变量才能使用它。原始的j变量保持不变。要获得双倍,你必须这样做:
double newDouble = Convert.ToDouble(j);
但是这会出错,因为Convert.ToDouble仅适用于实现IConvertible接口的对象(DataRow没有)。假设DataRow中的值是您实际使用的值,则可以使用列索引检索此值
double newDouble = Convert.ToDouble(j[2]);
或按列名
double newDouble = Convert.ToDouble(j["ColumnName"]);