Je l'objet suivant dans une liste:Créer un dictionnaire sur une liste avec le regroupement
public class DemoClass
{
public int GroupKey { get; set; }
public string DemoString { get; set; }
public object SomeOtherProperty { get; set; }
}
Maintenant, je veux créer suivant dictionnaire sortir:
Dictionary<int, List<DemoClass>>
Je veux groupe le List<DemoClass>
par la propriété GroupKey
, mais je ne comprends pas comment cela est fait et de l'aide.
Après avoir réfléchi un peu, j'ai obtenu le comportement nécessaire avec:
var groupedDemoClasses = from demoClass in mySepcialVariableWhichIsAListOfDemoClass
group demoClass by demoClass.GroupKey
into groupedDemoClass
select groupedDemoClass;
var neededDictionary = groupedDemoClass.ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
mais, est-il un moyen de faire cela en une seule déclaration?
Je pensais que la recherche n'est pas très bonne, comparé à un dictionnaire construit, dans un environnement à long terme, car il construit le résultat frais pour chaque demande ... s'il vous plaît corrigez-moi, si je me trompe! –
Non, cela crée toute la recherche. En général, ToXXX n'utilise pas l'exécution différée. –
(Vous pensez peut-être à un Groupement, qui est en effet différé.) –