Поддержка пейджинга - ADO.NET Entitry Framework и LINQ - PullRequest
4 голосов
/ 21 апреля 2009

Какая поддержка подкачки предлагается через ADO.NET EF и LINQ?

На что похож «первые 10» Select?

"Следующие 10" Выберите?

Ответы [ 3 ]

11 голосов
/ 21 апреля 2009

Как объяснили здесь другие, вам нужны Take () и Skip ().

Они прервут набор результатов, чтобы получить нужную вам страницу.

Вы должны каким-то образом поддерживать информацию PageIndex и PageSize, чтобы вы могли передавать их при выполнении запроса. Если ваш доступ к данным осуществляется, например, через веб-службу, вы передадите индекс / размер в то же время, что и критерии фильтрации, сохраняя эти значения в своем клиенте (приложении или странице, если это веб-сайт).

Не существует "итератора с отслеживанием состояния" из коробки, если это то, что вы ищете ...

Более того, если вы реализуете конструкцию «стандартного пейджинга», вам нужно будет получить общее количество записей перед ограничением вашего запроса, что вы можете сделать так, предполагая, что ваша функция получает PageSize и PageIndex в качестве параметров каким-либо образом:

var query = ...your normal query here...
int totalRecordCount = query.Count();
var pagedQuery = query.Skip(PageIndex*PageSize).Take(PageSize);
8 голосов
/ 21 апреля 2009

Ключевое слово Take используется для определения того, как многие записи должны быть получены. Простой пример ключевого слова Take предоставлено ниже.

Список клиентов = GetCustomerList (); * +1004 *

var first3Customers = (
            from c in customers

            select new {c.CustomerID, c.CustomerName} )
            .Take(4);

Здесь мы берем первые 4 заказчик по предоставленному списку.

мы также можем использовать предложение where для сначала сузить список, а затем возьми 4 из них.

var first3Customers = (
            from c in customers
           where c.Region == "Kol"

            select new {c.CustomerID, c.CustomerName} )
            .Take(4);

Но что, если мы хотим получить данные между 4 и 8 записью. В В этом случае мы используем ключевое слово пропустить пропустить количество записей (сверху) мы не хотим Вот пример используя ключевое слово Skip.

var first3Customers = (
            from c in customers
           where c.Region == "Kol"

            select new {c.CustomerID, c.CustomerName} )
            .Skip(3).Take(4);

Подробнее Здесь

0 голосов
/ 09 января 2013

Если у вас есть nuget в вашей Visual Studio, вы можете добавить PagedList пакет.

Посмотрите на эту ссылку на asp.net

...