2009-12-17 34 views
4

我認爲這並不複雜,但經過一番研究後,我找不到一個簡單問題的答案。雙字典鍵轉換

我通過字典中的鍵迭代,我想在某些計算中使用字符串作爲雙精度的鍵。

如果我這樣做:

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

它似乎沒有工作,我得到一個「輸入字符串的不正確的格式」的錯誤。

什麼是正確的方式從密鑰獲得雙..

感謝

伯納德

+0

你確定所有的鑰匙都是有效的雙打嗎? – 2009-12-17 21:01:38

+0

您可以發佈(部分)您的字典的內容 – ChrisF 2009-12-17 21:03:04

+0

請注意,雙重語法可能因國家/語言/機器/用戶而異。 – ChrisW 2009-12-17 21:08:49

回答

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 
    } 
} 
+0

太好了。 非常感謝! – 2009-12-17 21:10:29

0

這是告訴你,字符串(這恰好是關鍵,雖然這是無關的問題)不能被解析成雙。檢查您嘗試轉換的字符串的值。

0

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