Linq to Objects: сохраняет ли GroupBy порядок элементов?

Ответы:

146

Нашел ответ в MSDN : Да.

Эти IGrouping<TKey, TElement>объекты получены в порядке , основанном на порядок элементов в источнике , которые произвели первый ключ каждого IGrouping<TKey, TElement>. Элементы в группе выводятся в том порядке, в котором они появляются в исходном тексте .

Константин Спирин
источник
2
Не то чтобы это имеет прямое отношение к вопросу, но поскольку это может быть вопрос, на который люди попадают, обнаруживая, что вещи неупорядочены, может быть интересно отметить, что это не относится к PLINQ, если явно не запрошено.
Ронан Тибодау
8
Эта документация применима только к LINQ-to-объектам. То же самое может быть неверным для конкретных реализаций LINQ-to-SQL, LINQ-to-XML или LINQ-to-something-else.
leviathanbadger
1
@ aboveyou00 после нескольких часов попыток отсортировать группы по другим полям, кроме ключа группы, вы спасли мне день своим комментарием. LINQ to MySql автоматически сортирует группы по ключу группы! Мне пришлось использовать ToList, чтобы доставить упорядоченный запрос к локальным объектам, а затем сгруппировать его. Спасибо.
Иван Феррер Вилла