我想反转字典的键和值。即来自源字典Dictionary<int, string>
,我想得到Dictionary<string, List<int>>
。这是List<int>
因为该值可以在不同的键下多次出现在源字典中。
例子:
{
1: "A"
2: "A"
3: "A"
4: "B"
5: "B"
6: "C"
7: "D"
}
将转变为:
{
"A": [1,2,3]
"B": [4,5]
"C": [6]
"D": [7]
}
感谢帮助。
编辑:
好的,在你们的帮助下,我对这个算法有了一些了解。现在我看到了两种可能的解决方案(除其他外)并且不知道它们之间的真正区别是什么,因为结果似乎是相同的。
是否存在性能问题?
var byLookup = actions.ToLookup(pair => pair.Value, pair => pair.Key)
.ToDictionary(group => group.Key, group => group.AsEnumerable());
var byGroupBy = actions.GroupBy(pair => pair.Value, pair => pair.Key)
.ToDictionary(group => group.Key, group => group.AsEnumerable());
编辑2:
我最终只使用了
var byLookup = actions.ToLookup(pair => pair.Value, pair => pair.Key)
我没想到会这么简单。谢谢大家。