Как использовать Linq для подкачки общей коллекции?
У меня есть объект типа System.Generic.Collections.List(Of MyCustomClass).
Учитывая целочисленные varaibles pagesize и pagenumber, как я могу запросить только одну страницу объектов MyCustomClass?
Ответы
Ответ 1
Если у вас есть ваш linq-запрос, содержащий все строки, которые вы хотите отобразить, этот код можно использовать:
var pageNum = 3;
var pageSize = 20;
query = query.Skip((pageNum - 1) * pageSize).Take(pageSize);
Вы также можете сделать метод расширения объекта, чтобы иметь возможность писать
query.Page(2,50)
чтобы получить первые 50 записей страницы 2. Если вы хотите, то информация находится на блоге сплошного кода.
Ответ 2
Привет. Существует злая вещь под названием PagedList, которую я получил, наблюдая за фильмом Rob Conery Screen Cast.
http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/
В нем есть все элементы Skip и 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 и Take.