Задать вопрос
Dyikot
@Dyikot

Произойдет ли сортировка отфильтрованных элементов или наборот?

Есть такой запрос:
var newArticles = articles
    .Where(a => !a.HasViewed)
    .OrderBy(a => a.UpdateDate);

Точно ли будет сортировка уже отфильтровнных элементов? Ведь это отложенные вычисления и не должен он например после фильтрации первого элемента сначало просортировать все элементы? Если это так то только например перевести в Array чтобы обеспечить чтобы все элементы сначало были отфильтрованы?
  • Вопрос задан
  • 29 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
Объект, который вернет IEnumerable.OrderBy, сначала выберет всё, что вернет Where, а потом это отсортирует. Произойдет это в момент, когда будет вызван его метод GetEnumerator - напрямую или как часть реализации оператора foreach и т.п. - в этом и состоит его отложенное выполнение.

Вообще, методы LINQ, которые выполняются в отложенном реэиме, делятся, в свою очередь на две группы: работающие в потоком режиме (потоковые, streaming execution) - они обрабатывают каждый элемент входной последовательности по отдельности и сразу по получении - и не-потоковые, работающие с последовательностью как целым.
Where относится к первой группе, OrderBy - ко второй.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы