词典<字符串,MyClass的>为List >其中KeyValuePair值是MyClass.ToString()

问题描述:

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开导..

没有测试/编译,但是这样的事情应该工作:

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() –

使用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))将代替代表。 –