数据表的嵌套foreach到xydataseries

时间:2017-11-15 19:45:58

标签: c# wpf datatable

我有一个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#和编程的新手,谢谢你的帮助。

1 个答案:

答案 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"]);