Linq to Objects: GroupBy preserva a ordem dos elementos?


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 .


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.