将Dictionary <int,Enumerable>转换为Dictionary <int,Enumerable>反转内容

rou*_*sis 4 .net c# linq dictionary

为了清楚起见,我们说我们有学生和班级,这是一个多对多的关系.

我有一个词典,其中键是学生ID,而Enumerable是一个类的集合(比如我们只有id),我想将它恢复为classId的词典,学生

Linq有办法做到这一点吗?我可以想办法用循环来做这个,但我确信有办法做到这一点.

Meh*_*ari 7

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));
Run Code Online (Sandbox Code Playgroud)