4
为了清楚起见,可以说我们有学生和班级,它是一个多对多的关系。将字典<int,Enumerable>转换为字典<int,Enumerable>反转内容
我有一个字典,其中的关键是学生的id和可枚举是类(比方说,我们只是有ID)的集合,我希望恢复这CLASSID的字典,学生
有一种与Linq做到这一点的方法?我可以想办法用循环做到这一点,但我相信有一种方法可以做到这一点。
为了清楚起见,可以说我们有学生和班级,它是一个多对多的关系。将字典<int,Enumerable>转换为字典<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 2009-08-24 22:08:52