明快にするために、学生とクラス、多対多の関係があるとします。Dictionary <int、Enumerable>をDictionary <int、Enumerable>に変換します。内容を反転する
がある学生、そこに私は、キーは、学生のIDですし、列挙、クラス(たとえば私たちはIDを持っている)の集合である辞書を持っていると私はCLASSIDの辞書にこれを元に戻したいですLinqでこれを行う方法?私はループでこれを行う方法を考えることができますが、私はこれを行う方法があると確信しています。
明快にするために、学生とクラス、多対多の関係があるとします。Dictionary <int、Enumerable>をDictionary <int、Enumerable>に変換します。内容を反転する
がある学生、そこに私は、キーは、学生のIDですし、列挙、クラス(たとえば私たちはIDを持っている)の集合である辞書を持っていると私はCLASSIDの辞書にこれを元に戻したいですLinqでこれを行う方法?私はループでこれを行う方法を考えることができますが、私はこれを行う方法があると確信しています。
var newDic = dic
.SelectMany(pair => pair.Value
.Select(val => new { Key = val, Value = pair.Key }))
.GroupBy(item => item.Key)
.ToDictionary(gr => gr.Key, gr => gr.Select(item => item.Value));
これは、実行する必要があります。
var invertedDic = dic
.SelectMany(x => x.Value, (pair, value) => new {key = pair.Key, value = value})
.GroupBy(x => x.Value, x => x.Key, (value, key) => new {value, key})
.ToDictionary(x => x.Value, x => x.Key);
が最初に私はあなたがあなた自身の質問に答え思いました。私は疲れています。 – Amy