Ich habe ein
List<MyObject>
dass ich aus der Datenbank abrufe. Ich möchte jedoch, dass es zu Gruppierungszwecken von einer Eigenschaft in MyObject verschlüsselt wird. Was ist der beste Weg mit LINQ, um meine Liste zu erstellen:
Dictionary<long, List<MyObject>>
Ich habe folgendes:
myObjectList.ToDictionary(x => x.KeyedProperty)
Aber es kehrt zurück:
Dictionary<long, MyObject>
Antworten:
Es hört sich so an, als ob Sie die
MyObject
Instanzen nach gruppierenKeyedProperty
und diese Gruppierung in eine setzen möchtenDictionary<long,List<MyObject>>
. Wenn ja, versuchen Sie Folgendesquelle
Sie sollten die
ToLookup
Erweiterungsmethode für dieEnumerable
Klasse wie folgt verwenden:Wenn Sie das in ein Wörterbuch einfügen möchten, können Sie die
ToDictionary
Erweiterungsmethode wie folgt verwenden:quelle
ILookup
Referenzen erhalten , während die akzeptierte Antwort nicht?Lookup<TKey, TValue>
eine bessere Struktur als a sein kann , wenn Sie eine Eins-zu-Viele-Beziehung zwischen dem Schlüssel und den Elementen habenDictionary<TKey, TValue>
.ILookup
oft die ideale In-Code-Struktur ist, sie für die Serialisierung oft nicht gut gehandhabt wird.