Почему цепочка LINQ иногда читает всю коллекцию до первого результата?
Where и Select могут отдавать элементы по одному. А вот OrderBy, GroupBy и Join устроены сложнее, им нужно подготовить данные, прежде чем продолжить обработку. Автор разбирает эту границу между ленивым вычислением и буферизацией.
В статье показывают:
• зачем OrderBy хранит элементы и сортирует индексы
• как GroupBy собирает группы и сохраняет порядок их появления
• почему Join сначала строит структуру для внутренней коллекции
Можно понять куда уходит память в длинных цепочках и почему перестановка операций иногда меняет стоимость запроса.
➡️ C# Ready | #статья
Where и Select могут отдавать элементы по одному. А вот OrderBy, GroupBy и Join устроены сложнее, им нужно подготовить данные, прежде чем продолжить обработку. Автор разбирает эту границу между ленивым вычислением и буферизацией.
В статье показывают:
• зачем OrderBy хранит элементы и сортирует индексы
• как GroupBy собирает группы и сохраняет порядок их появления
• почему Join сначала строит структуру для внутренней коллекции
Можно понять куда уходит память в длинных цепочках и почему перестановка операций иногда меняет стоимость запроса.
Продолжай читать на Habr!
➡️ C# Ready | #статья