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

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

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

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

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

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

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