Мой первый вопрос будет; зачем тебе тысячи книг в памяти. допустимых сценариев для этого, но тогда вы просто должны принять стоимость. Но в большинстве случаев (поиск, фильтрация, сортировка, разбиение по страницам) и т. Д. Вы можете просто извлечь страницы данных, которые вам активно нужны, из базы данных, которой часто не так много.
Даже если вам все они нужны, они не обязательно нужны одновременно - например, вы можете настроить блок итератора (yield return
) над чем-то вроде IDataReader
и обрабатывать только строки за раз. На самом деле это не так много, как вы думаете, и обычно предпочтительнее буферизации больших объемов данных. Если вам требуется несколько агрегатов для потоковых данных (чтение только один раз), PushLinq может помочь вам в этом.
Во многих других случаях можно делать такие вещи, как агрегаты внутри базы данных; это одно из преимуществ LINQ, позволяющих вам выражать агрегат в базе данных с помощью объектной модели из вашей доменной модели.
Каков конкретный сценарий?