我今天心情低落……有谁知道一种快速而优雅的方法来转换字典,使键变成值,反之亦然?
Example:
var originalDictionary = new Dictionary<int, string>() {
{1, "One"}, {2, "Two"}, {3, "Three"}
};
becomes
var newDictionary = new Dictionary<string, int>();
// contents:
// {
// {"One", 1}, {"Two", 2}, {"Three", 3}
// };
Use 到字典 http://msdn.microsoft.com/en-us/library/system.linq.enumerable.todictionary.aspx ?
orignalDictionary.ToDictionary(kp => kp.Value, kp => kp.Key);
这有效是因为IDictionary<TKey,TElement>
;也是一个IEnumerable<KeyValuePair<TKey,TElement>>
;.请注意,如果有重复的值,则会出现异常。
如果您有重复的值,您将需要决定如何处理它们。一种简单的方法是首先按值分组来忽略重复项,然后创建字典。
originalDictionary
.ToLookup(kp => kp.Value)
.ToDictionary(g => g.Key, g => g.First().Key);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)