Linq a objetos: ¿GroupBy conserva el orden de los elementos?

Respuestas:

146

Respuesta encontrada en MSDN : Sí.

Los IGrouping<TKey, TElement>objetos se entregan en un orden basado en el orden de los elementos en la fuente que produjeron la primera clave de cada uno IGrouping<TKey, TElement>. Los elementos de una agrupación se obtienen en el orden en que aparecen en la fuente .

Konstantin Spirin
fuente
2
No es que sea directamente relevante para la pregunta, pero como puede ser una pregunta en la que las personas caen mientras encuentran cosas que no están bien ordenadas, puede interesarle notar que no es el caso de PLINQ a menos que se solicite explícitamente.
Ronan Thibaudau
8
Esa documentación solo es aplicable a LINQ-to-objects. Lo mismo puede no ser cierto para implementaciones específicas de LINQ-to-SQL, LINQ-to-XML o LINQ-to-anything-else.
leviathanbadger
1
@ aboveyou00 después de horas tratando de ordenar los grupos por otros campos que no sean la clave de grupo, me salvaste el día con tu comentario. ¡LINQ to MySql ordena los grupos automáticamente por la clave de grupo! Tuve que usar ToList para llevar la consulta ordenada a los objetos locales, luego agruparla. Gracias.
Ivan Ferrer Villa