LINQ – Convertir la liste en dictionnaire avec une valeur comme liste

j’ai un

List 

que je récupère de la firebase database. Cependant, je voudrais qu’il soit indexé 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> 

J’ai ce qui suit:

 myObjectList.ToDictionary(x => x.KeyedProperty) 

Mais ça revient:

 Dictionary 

Il semble que vous souhaitiez regrouper les instances de KeyedProperty par KeyedProperty et placer ce regroupement dans un Dictionary> . Si oui, alors essayez ce qui suit

 List list = ...; var map = list .GroupBy(x => x.KeyedProperty) .ToDictionary(x => x.Key, x => x.ToList()); 

Vous devez utiliser la méthode d’extension ToLookup sur la classe Enumerable comme Enumerable :

 List list = ...; ILookup 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> dictionary = lookup.ToDictionary( l => l.Key);