2013-06-05 172 views
-1
Dictionary<string, MyClass> dict = new Dictionary<string, MyClass>(); 

//where MyClass has an override for ToString() 

現在我該怎樣從字典獲得List<KeyValuePair<string, string>>其中,如果MyClass.ToString()在KeyValuePair的價值和KeyValuePair中的鍵與dict相同..?詞典<字符串,MyClass的>爲List <KeyValuePair <字符串,字符串>>其中KeyValuePair值是MyClass.ToString()

有沒有簡單的方法來做到這一點?我如何在那裏使用IDictionary.ToList<>()功能? PLZ開導..

回答

6

沒有測試/編譯,但是這樣的事情應該工作:

dict.Select(kvp => new KeyValuePair<string, string>(kvp.Key, kvp.Value.ToString())).ToList() 

如果語法不是100%正確的,我希望你有這個想法。

+0

這應該工作:) – Johan

+0

感謝jods,這就是快..會盡量滿足(o:3 –

+0

再次感謝很多Jods ..可以完美兼容 dict.Select( kvp => new KeyValuePair (kvp.Key,kvp.Value.ToString()))。ToList() –

2

使用LINQ:

var list = dict.Select(k => 
    new KeyValuePair<string,string>(k.Key, k.Value.ToString())) 
    .ToList(); 
+0

嗨馬特,謝謝你的回答,你可能看起來很直截了當,但是你可以解釋一下lambda運算符:「=>」在這裏的意思嗎? –

+1

「.Select()」的參數是一個函數,所以'k => ...'定義了一個函數以'k'作爲參數,函數的主體在'=>'之後。 –

+1

知道了..如果我錯了,PLZ糾正我。 語法:k => lambda(k)那意味着lambda(k),這個匿名函數用於像JavaScript內嵌代碼塊一樣的位置。 (k => lambda(k))將代替代表。 –

相關問題