2009-08-24 13 views
4

für die Klarheit lässt sagen, wir haben Studenten und Klassen, es ist eine viel zu viele Beziehung.konvertieren Dictionary <int, Enumerable> zu Dictionary <int, Enumerable> invertieren Inhalt

Ich habe ein Wörterbuch, wo der Schlüssel ist, die Schüler-ID und die Enumerable ist eine Sammlung von Klassen (sagen wir nur die ID haben) und ich möchte dies von classId auf ein Wörterbuch zurückzukehren, Studenten

gibt es eine Möglichkeit, dies mit Linq zu tun? Ich kann mir einen Weg vorstellen, dies mit Schleifen zu tun, aber ich bin sicher, dass es einen Weg gibt, dies zu tun.

Antwort

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)); 
+0

Zuerst dachte ich, Sie Ihre eigene Frage beantwortet. Mann, ich bin müde. – Amy

2

sollte dies tun:

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); 
Verwandte Themen