Je tente d'utiliser LINQ pour créer un Dictionary>
à partir d'une List
. Je peux y arriver en utilisant "var", mais je ne veux pas utiliser des 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 également essayé d'utiliser Cast<>()
de la bibliothèque LINQ une fois que j'ai x
, mais j'obtiens des erreurs de compilation indiquant que c'est un cast invalide.
0 votes
Que se passerait-il si vous essayiez var x = (from CustomObject o in ListOfCustomObjects group o by o.PropertyName into t select t).ToList();
53 votes
Y a-t-il une raison pour laquelle vous devez faire cela plutôt que d'utiliser ToLookup, qui est conçu pour cela?
1 votes
Jon, pourriez-vous s'il vous plaît poster un exemple de comment fonctionne ToLookup dans cette situation? Je ne suis pas familier avec cette méthode LINQ.
13 votes
@JonSkeet Tu es génial! (Je veux dire, tout le monde le savait déjà, mais quand même.) La raison pour laquelle je n'avais pas l'intention d'utiliser ToLookup était que je n'en avais jamais entendu parler jusqu'à maintenant. Maintenant je sais!
1 votes
Juste pour la clarté, l'utilisation de
var
n'est pas l'utilisation d'un type "anonyme", c'est l'utilisation d'un type "implicite". Les types anonymes sont de nouvelles classes créées par le compilateur pour gérer la constructionnew { chose = "truc" };
. Les types implicites sont des classes existantes,var
est simplement un moyen pratique de les référencer lorsque la variable est attribuée immédiatement, le type de la variable peut être déduit du type de l'objet qui lui est attribué. Vous pouvez même implicitement typer une variable qui référence un type anonyme, par exemple :var a = new { chose = "truc" };