以double形式转换字典键

时间:2009-12-17 20:57:49

标签: c# dictionary

我认为这并不复杂,但经过一些研究后,我找不到一个简单问题的答案。

我正在迭代字典中的键,我想在某些计算中使用字符串作为双字符串。

如果我这样做:

foreach (KeyValuePair<string, List<string> price in dictionary)
double ylevel = Convert.ToDouble(price.Key);

似乎不起作用,我收到“输入字符串格式不正确”错误。

从钥匙中获取双倍的正确方法是什么..

由于

伯纳德

3 个答案:

答案 0 :(得分:5)

你正确地做到了。

错误消息表明您的其中一个键实际上不是双倍。

如果您在调试器中单步执行此示例,则会在第二项上看到它失败:

var dictionary = new Dictionary<string, List<string>>();
dictionary.Add("5.72", new List<string> { "a", "bbb", "cccc" });
dictionary.Add("fifty two", new List<string> { "a", "bbb", "cccc" });

foreach (KeyValuePair<string, List<string>> price in dictionary)
{
    double ylevel = Convert.ToDouble(price.Key);
}

<强>解决方案

要解决此问题,您应该使用以下代码:

var dictionary = new Dictionary<string, List<string>>();
dictionary.Add("5.72", new List<string> { "a", "bbb", "cccc" });
dictionary.Add("fifty two", new List<string> { "a", "bbb", "cccc" });

foreach (KeyValuePair<string, List<string>> price in dictionary)
{
    double ylevel;
    if(double.TryParse(price.Key, out ylevel))
    {
        //do something with ylevel
    }
    else
    {
        //Log price.Key and handle this condition
    }
}

答案 1 :(得分:0)

这告诉你字符串(碰巧是关键,尽管这与问题无关)无法解析为double。检查您尝试转换的字符串的值。

答案 2 :(得分:0)

double ylevel = Convert.ToDouble(price.Key.GetHashCode());