Преобразование словарного ключа в двойной - PullRequest
4 голосов
/ 17 декабря 2009

Я думаю, что это не сложно, но после некоторых исследований я не могу найти ответ на простую проблему.

Я перебираю ключи в словаре, и я хотел бы использовать ключ, который является строкой как двойной в некоторых вычислениях.

Если я сделаю это:

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

Кажется, что это не работает, и я получаю сообщение об ошибке "Строка ввода не была в правильном формате".

Как правильно получить дубль от ключа ..

Спасибо

Bernard

Ответы [ 3 ]

5 голосов
/ 18 декабря 2009

Вы делаете это правильно.

Сообщение об ошибке указывает, что один из ваших ключей на самом деле не является двойным.

Если вы выполните этот пример в отладчике, вы увидите, что он не работает на втором элементе:

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
    }
}
0 голосов
/ 18 декабря 2009

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

0 голосов
/ 18 декабря 2009

Это говорит о том, что строка (которая является ключом, хотя это не имеет отношения к проблеме) не может быть проанализирована в двойную. Проверьте значение строки, которую вы пытаетесь преобразовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...