J'essaie d'utiliser LINQ pour créer un Dictionary<string, List<CustomObject>>
À partir d'un List<CustomObject>
. Je peux obtenir que cela fonctionne en utilisant "var", mais je ne veux pas utiliser de types anonymes. Voici ce que j'ai
var x = (from CustomObject o in ListOfCustomObjects
group o by o.PropertyName into t
select t.ToList());
J'ai aussi essayé d'utiliser Cast<>()
de la bibliothèque LINQ une fois que j'ai x
, mais je rencontre des problèmes de compilation qui font qu'il s'agit d'une distribution non valide.
Dictionary<string, List<CustomObject>> myDictionary = ListOfCustomObjects
.GroupBy(o => o.PropertyName)
.ToDictionary(g => g.Key, g => g.ToList());
Je ne peux pas commenter sur @ Michael Blackburn, mais je suppose que vous avez eu le vote négatif, car GroupBy n'est pas nécessaire dans ce cas.
Utilisez-le comme:
var lookupOfCustomObjects = listOfCustomObjects.ToLookup(o=>o.PropertyName);
var listWithAllCustomObjectsWithPropertyName = lookupOfCustomObjects[propertyName]
De plus, j'ai constaté que cela fonctionnait bien mieux qu'avec GroupBy (). ToDictionary ().