web-dev-qa-db-fra.com

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 en

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

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

J'ai fait comme ça:

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

39
Subodh Chettri

Il sera plus efficace de remplacer:

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

avec:

gdc => gdc.Key

A part ça, on dirait que j'aurais fait.

Alternativement, si vous êtes d'accord avec les méthodes d'extension par rapport à 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());
81
DocMax