辞書のキーと値を逆にしたいと思います。つまり、ソース辞書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]
}
手伝ってくれてありがとう。
編集:
OK、皆さんの助けを借りて、このアルゴリズムについて少し理解することができました。今、私は(とりわけ)2つの可能な解決策を見て、結果が同じであるように見えるので、それらの間の本当の違いは何ですか。
パフォーマンスの問題はありますか?
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)
こんなに簡単だとは思いませんでした。皆さんありがとう。