Как использовать Linq для подкачки общей коллекции? - PullRequest
15 голосов
/ 22 августа 2008

У меня есть объект типа System.Generic.Collections.List (Of MyCustomClass).

С учетом целочисленного размера страниц и номера страницы, как я могу запросить только одну страницу объектов MyCustomClass?

Ответы [ 2 ]

30 голосов
/ 22 августа 2008

Если у вас есть linq-запрос, содержащий все строки, которые вы хотите отобразить, этот код можно использовать:

var pageNum = 3;
var pageSize = 20;
query = query.Skip((pageNum - 1) * pageSize).Take(pageSize);

Вы также можете создать метод расширения для объекта, чтобы иметь возможность писать

query.Page(2,50)

, чтобы получить первые 50 записей на странице 2. Если вы этого хотите, информация находится в блоге с твердым кодом .

5 голосов
/ 14 января 2009

Привет. Есть одна злая штука под названием PagedList, которую я получил, когда смотрел ролик Роба Конери.

http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/

В него встроены все элементы Skip and Take.

Все, что вы делаете, это звоните

var query = from item in DB.Table
where item.Field == 1
orderby item.Field2
select item;

PagedList<MyType> pagedList = query.ToPagedList(pageIndex, pageSize);

Надеюсь, это поможет ... Я использую его сейчас, и он работает нормально для linq для сущностей. С Linq для сущностей вы должны выполнить Orderby, прежде чем сможете использовать Skip and Take.

...