Linq to Objects: GroupBy conserve-t-il l'ordre des éléments?


Réponses:


146

Réponse trouvée sur MSDN : Oui.

Les IGrouping<TKey, TElement>objets sont générés dans un ordre basé sur l'ordre des éléments dans la source qui ont produit la première clé de chacun IGrouping<TKey, TElement>. Les éléments d'un groupement sont générés dans l'ordre dans lequel ils apparaissent dans la source .


2
Non pas que cela soit directement pertinent par rapport à la question mais comme il peut s'agir d'une question sur laquelle les gens tombent en trouvant des choses mal ordonnées, il peut être intéressant de noter que ce n'est pas le cas pour PLINQ sauf si cela est expressément demandé.
Ronan Thibaudau

8
Cette documentation ne s'applique qu'aux objets LINQ-to-objects. La même chose peut ne pas être vraie pour les implémentations spécifiques de LINQ-to-SQL, LINQ-to-XML ou LINQ-to-something-else.
leviathanbadger

1
@ aboveyou00 après des heures à essayer de classer les groupes par d'autres champs que la clé de groupe, vous m'avez sauvé la journée avec votre commentaire. LINQ to MySql trie les groupes automatiquement par la clé de groupe! J'ai dû utiliser ToList pour apporter la requête ordonnée aux objets locaux, puis grouper dessus. Je vous remercie.
Ivan Ferrer Villa
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.