Linq to Objects: Bewahrt GroupBy die Reihenfolge der Elemente auf?

113

Bewahrt Enumerable.GroupBy von LINQ zu Objekten die Reihenfolge der Elemente in den Gruppen?

Konstantin Spirin
quelle
1
Mögliches Duplikat der Auftragserhaltung mit LINQ
Nawfal

Antworten:

146

Gefundene Antwort auf MSDN : Ja.

Die IGrouping<TKey, TElement>Objekte werden in einer Reihenfolge ausgegeben, die auf der Reihenfolge der Elemente in der Quelle basiert, die jeweils den ersten Schlüssel erzeugt haben IGrouping<TKey, TElement>. Elemente in einer Gruppierung werden in der Reihenfolge ausgegeben, in der sie in der Quelle erscheinen .

Konstantin Spirin
quelle
2
Nicht, dass es direkt für die Frage relevant ist, aber da es sich möglicherweise um eine Frage handelt, auf die Menschen fallen, während sie Dinge finden, die nicht gut geordnet sind, kann es interessant sein, festzustellen, dass dies bei PLINQ nicht der Fall ist, es sei denn, dies wird ausdrücklich angefordert.
Ronan Thibaudau
8
Diese Dokumentation gilt nur für LINQ-to-Objects. Dies gilt möglicherweise nicht für bestimmte Implementierungen von LINQ-zu-SQL, LINQ-zu-XML oder LINQ-zu-irgendetwas-anderem.
Leviathanbadger
1
@ Aboveyou00 Nachdem Sie stundenlang versucht haben, die Gruppen nach anderen Feldern als dem Gruppenschlüssel zu sortieren, haben Sie meinen Tag mit Ihrem Kommentar gespeichert. LINQ to MySql sortiert die Gruppen automatisch nach dem Gruppenschlüssel! Ich musste ToList verwenden, um die geordnete Abfrage zu lokalen Objekten zu bringen, und dann darüber gruppieren. Danke dir.
Ivan Ferrer Villa