Перечислимые методы LINQ поддерживают относительный порядок элементов? - PullRequest
10 голосов
/ 27 мая 2011

Скажите, у меня есть List<Foo> foos, где важен текущий порядок элементов.Если я затем применю метод LINQ Enumerable, такой как GroupBy, Where или Select, могу ли я рассчитывать на полученный IEnumerable<Foo> для итерации в том же относительном порядке, что и исходный список?

1 Ответ

16 голосов
/ 27 мая 2011

Да, для методов Enumerable (LINQ to Objects, что относится к упомянутому вами List<T>), вы можете положиться на порядок элементов, возвращаемых Select, Where или GroupBy. Это не относится к вещам, которые по своей природе неупорядочены, как ToDictionary или Distinct.

С Enumerable.GroupBy Документация:

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

Это не обязательно верно для IQueryable методов расширения (других провайдеров LINQ).

...