Linq to Objects: GroupBy preserva a ordem dos elementos?

113

Enumerable.GroupBy de LINQ to Objects preserva a ordem dos elementos nos grupos?

Konstantin Spirin
fonte
1
possível duplicata do pedido
nawfal

Respostas:

146

Resposta encontrada no MSDN : Sim.

Os IGrouping<TKey, TElement>objetos são produzidos em uma ordem baseada na ordem dos elementos na fonte que produziu a primeira chave de cada um IGrouping<TKey, TElement>. Os elementos em um agrupamento são produzidos na ordem em que aparecem na origem .

Konstantin Spirin
fonte
2
Não que seja diretamente relevante para a questão, mas como pode ser uma questão na qual as pessoas caem enquanto as coisas não estão bem ordenadas, pode ser interessante notar que não é o caso para PLINQ, a menos que seja explicitamente solicitado.
Ronan Thibaudau
8
Essa documentação é aplicável apenas a objetos LINQ. O mesmo pode não ser verdadeiro para implementações específicas de LINQ-to-SQL, LINQ-to-XML ou LINQ-to-any-else.
leviathanbadger
1
@ aboveyou00 depois de horas tentando obter os grupos classificados por outros campos que não a chave de grupo, você salvou meu dia com seu comentário. LINQ to MySql classifica os grupos automagicamente pela chave de grupo! Eu tive que usar ToList para trazer a consulta ordenada para objetos locais e, em seguida, agrupar sobre isso. Obrigado.
Ivan Ferrer Villa