Гарантирует ли.GroupBy() порядок в своих группах?

Скажем, у меня есть (упорядоченная) последовательность животных:

орел
слон
тарантул
автомобиль-амфибия
тигр

и я группирую по первой букве:

Animals.GroupBy(animal => animal.First())

будут элементы IGroupings в результирующей последовательности в том же порядке, что и входная последовательность?

2 ответа

Решение

Да, они будут: GroupBy (MSDN).

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

Цитата со страницы MSDN для GroupBy:

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

Итак, ваш пример приведет к:

  1. Группа 1

    • орел
    • слон
  2. Группа 2

    • тарантул
    • автомобиль-амфибия
    • тигр

Конечно, это относится только к IEnumerable<T> реализация. IQueryable<T> реализация не имеет такой гарантии.

Другие вопросы по тегам