2017-12-02 123 views
0

我有一个Dictionary它充满了Lists每个列表代表我Datatable中的Datacolumn。我试图遍历字典中的特定列表,但在尝试追加我时出现错误,指出我无法将对象转换为双精度。C#从对象转换

Dictionary<string, Dictionary<string, List<object>>> dict; 

我添加到字典了;

dict = dt.Columns.Cast<DataColumn>().ToDictionary(c => c.ColumnName, c => dt.AsEnumerable().Select(r => r[c]).ToList()); 

发生错误的地方;

XyDataSeries<double,double> xyseries; 

private void chkbx1_Checked(object sender, RoutedEventArgs e) 
{ 
    var list = dict["ColumnName1"]; 

    foreach (var i in list) 
    { 
     Convert.ToDouble(i); 
     xyseries.Append(one++, i); 
    } 

} 
+2

您会得到什么错误?你确定你的数据只包含'double'类型吗?它可能包含空值吗? –

+7

Convert.ToDouble *返回*转换后的double,它不会更改'i' –

+1

什么是转换为double Convert.ToDouble(i);'这不需要分配一些变量= Convert.ToDouble (i);'和'我'是不是一个好的var名字是你的情况..可怕的命名约定 – MethodMan

回答

4

你的问题是在这里:Convert.ToDouble(i);

ToDouble返回double,它不会改变i成双。您需要执行以下操作:

foreach (var i in list) 
{ 
    var d = Convert.ToDouble(i); 
    xyseries.Append(one++, d); 
} 
+0

呃,我觉得自己像一个白痴..谢谢! – User9123