У меня довольно сложный запрос linq к объектам, который я показываю на веб-сайте. Он использует пейджинг, поэтому я никогда не вытягиваю более 50 записей за раз для отображения.Как бороться с большими наборами результатов с Linq для Entities?
Но я также хочу предоставить пользователю возможность экспортировать полные результаты в Excel или какой-либо другой формат файла.
Я забочусь о том, что потенциально может быть большое количество записей, которые одновременно загружаются в память, чтобы сделать это.
Есть ли способ обработать набор результатов linq 1 запись за раз, как вы могли бы с datareader, так что только одна запись действительно хранится в памяти за раз?
Я видел предложения о том, что если вы перечислите запрос linq с циклом foreach, то все записи не будут сразу считываться в память и не будут перегружать сервер.
У кого-нибудь есть ссылка на что-то, что я мог прочитать, чтобы проверить это?
Буду признателен за любую помощь.
Благодаря
результат не должен быть в памяти по умолчанию - вы что-то делаете (ToArray, ToList, что угодно), чтобы заставить все это занести в память? Если нет, просто перебирайте результаты (foreach, Select, whatever), и все должно быть в порядке. –
В настоящее время мой метод запроса вызывает ToList() и возвращает список, но я мог бы изменить это легко, чтобы вернуть QueryObject. Вы уверены, что если я сделаю цикл foreach над IQueryable, он будет передавать данные? – user169867
Итак, ваш 'ToList()' будет в основном делать что-то вроде 'List