J'ai un
List<MyObject>
que je récupère de la base de données. Cependant, je voudrais qu'il soit saisi par une propriété dans MyObject à des fins de regroupement. Quelle est la meilleure façon avec LINQ de lancer ma liste pour:
Dictionary<long, List<MyObject>>
J'ai le suivant:
myObjectList.ToDictionary(x => x.KeyedProperty)
Mais ça revient:
Dictionary<long, MyObject>
Il semble que vous souhaitiez regrouper les instances MyObject
par KeyedProperty
et mettre ce regroupement dans un fichier Dictionary<long,List<MyObject>>
. Si oui, essayez ce qui suit
List<MyObject> list = ...;
var map = list
.GroupBy(x => x.KeyedProperty)
.ToDictionary(x => x.Key, x => x.ToList());
Vous devriez utiliser la méthode ToLookup
extension sur la classe Enumerable
class comme suit:
List<MyObject> list = ...;
ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);
Si vous voulez placer cela dans un dictionnaire, vous pouvez utiliser la méthode d'extension ToDictionary
, comme ceci:
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
l => l.Key);