为了清楚起见,我们假设我们有学生和班级,这是一个多对多的关系。
我有一个Dictionary,其中键是学生id,Enumerable是类的集合(假设我们只有id ),我想把它还原成classId的Dictionary,
有没有办法用Linq做到这一点?我可以想出一种使用循环来做这件事的方法,但我确信有一种方法可以做到这一点。
发布于 2009-08-24 21:58:39
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));发布于 2009-08-24 22:11:14
这应该可以做到:
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);https://stackoverflow.com/questions/1324912
复制相似问题