Гарантирует ли.GroupBy() порядок в своих группах?
Скажем, у меня есть (упорядоченная) последовательность животных:
орел слон тарантул автомобиль-амфибия тигр
и я группирую по первой букве:
Animals.GroupBy(animal => animal.First())
будут элементы IGrouping
s в результирующей последовательности в том же порядке, что и входная последовательность?
2 ответа
Да, они будут: GroupBy (MSDN).
Объекты IGrouping
выдаются в порядке, основанном на порядке элементов в источнике, который создал первый ключ каждого IGrouping . Элементы в группировке приводятся в порядке их появления в источнике.
Цитата со страницы MSDN для GroupBy:
IGrouping<TKey, TElement>
объекты выдаются в порядке, основанном на порядке элементов в источнике, который произвел первый ключ каждогоIGrouping<TKey, TElement>
, Элементы в группировке приводятся в порядке их появления в источнике.
Итак, ваш пример приведет к:
Группа 1
- орел
- слон
Группа 2
- тарантул
- автомобиль-амфибия
- тигр
Конечно, это относится только к IEnumerable<T>
реализация. IQueryable<T>
реализация не имеет такой гарантии.