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

113

Enumerable.GroupBy de LINQ à Objects conserve-t-il l'ordre des éléments dans les groupes?

Konstantin Spirin
la source
1
duplication possible de l' ordre
nawfal

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 .

Konstantin Spirin
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