Несколько вариантов
One:
Если пользователь только перенаправляет страницы вперед, вы можете просто оставить соединение открытым и использовать DataReader. Просто .Read () по мере необходимости.
Два:
Создайте таблицу #temp, используя ID пользователя как часть имени для сохранения результатов. Мне не нравится это, как будто пользователь прерывает иногда таблицы остаются. Около 1/2 секунды нажмите, чтобы создать и удалить #temp. Сохраните все результаты или только PK и создайте детали страницы по запросу.
Три:
Используйте DataReader для считывания PK в список <>. Это быстрее, чем вы думаете. Этот список идет только в IIS (не в браузер). На список можно ссылаться по порядковому номеру [] и сохраняет сортировку. Получите детали для страницы по мере необходимости. Проблема здесь в том, что PK в (3,9,2,6) не будет возвращать их в этом порядке. Я использую TVP, чтобы передать заказ, PK, таким образом, страница отсортирована по заказу. Я делаю именно это и получаю загрузки страниц для объектов с 20 свойствами по 40 строк за раз, и это занимает менее 1/2 секунды. Сделайте один запрос на таблицу (НЕ один на строку), затем соберите присваиваемые свойства в .NET Используйте DataReader (не DataTable). И вы даже можете запустить программу чтения на фоновом компьютере и вернуть обратно первую страницу ПК, используя прогрессированный обмен.