Лучший способ использовать запрос LINQ и пейджинг Gridview при работе с большими наборами записей. - PullRequest
1 голос
/ 28 июля 2011

У меня есть вид сетки на странице, которая заполняется запросом LINQ в коде позади. Ничего особенного, но использует разбиение на страницы (используя событие PageIndex Change).

Все работает нормально, но столкнулся с проблемой при работе в нашей среде разработки из-за большого количества данных в БД.

Таким образом, мой вопрос задан тем, что LINQ перечисляется только при привязке данных, а размер таблицы сетки составляет 20 страниц. Извлекает ли LINQ все записи каждый раз при привязке к базе данных? и как бы вы справились с привязкой результатов запроса LINQ к представлению таблицы при работе с большим количеством записей?

Ответы [ 2 ]

0 голосов
/ 28 июля 2011

Я предлагаю использовать два метода:

  1. Получите текущую страницу результатов, которую вы хотите просмотреть, используя методы Skip() и Take() в наборе результатов IQueryable<T>. Вы должны передать свои значения pageIndex и maximumRows, чтобы определить значение для отправки в Skip() (например, pageIndex * maximumRows).

  2. Второй метод, который нужно использовать, - это получить общее количество возможных записей, используя метод Count() для того же точного запроса LINQ. Таким образом, вы можете получить счетчик, не получая все строки (большие объемы данных).

Надеюсь, это поможет.

0 голосов
/ 28 июля 2011

Вот решение, в котором я создал пользовательскую сетку, которая поддерживает запрос linq и разбиение на страницы: LINQ TO SQL GridView (Enhanced Gridview)

...