Créer un dictionnaire sur une liste avec le groupement de
J'ai l'objet suivant dans une liste:
public class DemoClass
{
public int GroupKey { get; set; }
public string DemoString { get; set; }
public object SomeOtherProperty { get; set; }
}
Maintenant, je veux créer suivantes dictionnaire hors de lui:
Dictionary<int, List<DemoClass>>
Je veux du groupe de la List<DemoClass>
par la propriété GroupKey
, mais je ne comprends pas comment c'est fait et un peu d'aide.
Après avoir réfléchi un peu, j'ai obtenu le besoin de comportement 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 dans un seul état?
Vous devez vous connecter pour publier un commentaire.
Ce travail !!!
Juste pour faire mquander la suggestion de béton:
Vous auriez du faire plus court si vous avez utilisé plus courte de noms de variables trop, bien sûr 🙂
Cependant, permettez-moi de suggérer qu'un Recherche peut-être plus approprié? Une Recherche est en fait un dictionnaire à partir d'une clé à une
IEnumerable<T>
- à moins que vous vraiment besoin les valeurs dans une liste, cela rend le code plus courts (et plus efficace) avec le ToLookup appel:Vous déjà fait un one-liner. Il suffit de mettre la
ToDictionary
à la fin de votre première ligne. Si vous voulez qu'il soit plus court, l'utilisation de la fonctionnelle de la composition de la syntaxe au lieu de la syntaxe de la requête.Je vais légèrement hors sujet ici, mais je l'ai eu à ce fil becausde je cherchais un moyen de créer un dictionnaire de dictionnaire dans Linq, et la conversation ici me conduire à la réponse...
Vous peut utiliser linq pour créer des multi-niveau dictionnaires, ce qui est utile pour les cas où vous avez plus que 1 de la clé ou de la dimension que vous souhaitez rechercher. L'astuce est de créer un groupement puis de le convertir en un dictionnaire, comme suit:
La requête qui peut être utilisé comme suit:
Espérant que cela sera utile à quelqu'un d'autre qui a besoin de ce genre de requête.