41 votes

Regrouper dans un dictionnaire d'éléments

Salut, j'ai une liste d'éléments de type classe class1 comme indiqué ci-dessous. Comment les regrouper dans un

Dictionary<int,List<SampleClass>> basé sur l'ID de groupe

 class SampleClass
{
   public int groupID;
   public string someData;
 }                                                                                  

J'ai fait de cette façon :

 var t =(from data in datas group data by data.groupID into dataGroups select dataGroups).ToDictionary(gdc => gdc.ToList()[0].groupID, gdc => gdc.ToList());

Y a-t-il une meilleure façon de faire cela

90voto

DocMax Points 5744

Il sera plus efficace de remplacer :

 gdc => gdc.ToList()[0].groupID

avec:

 gdc => gdc.Key

A part ça, il semble que je l'aurais fait.

Alternativement, si vous êtes d'accord avec les méthodes d'extension sur LINQ (je les préfère personnellement), cela peut encore être raccourci avec:

 var t = data.GroupBy(data => data.groupID).ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X