词典<字符串,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%正确的,我希望你有这个想法。
使用LINQ:
var list = dict.Select(k =>
new KeyValuePair<string,string>(k.Key, k.Value.ToString()))
.ToList();
嗨马特,谢谢你的回答,你可能看起来很直截了当,但是你可以解释一下lambda运算符:“=>”在这里的意思吗? –
“.Select()”的参数是一个函数,所以'k => ...'定义了一个函数以'k'作为参数,函数的主体在'=>'之后。 –
知道了..如果我错了,PLZ纠正我。 语法:k => lambda(k)那意味着lambda(k),这个匿名函数用于像JavaScript内嵌代码块一样的位置。 (k => lambda(k))将代替代表。 –
这应该工作:) – Johan
感谢jods,这就是快..会尽量满足(o:3 –
再次感谢很多Jods ..可以完美兼容 dict.Select( kvp => new KeyValuePair(kvp.Key,kvp.Value.ToString()))。ToList() –