如何使用Linq分页泛型集合?

时间:2008-08-21 21:03:40

标签: .net linq .net-3.5 paging

我有一个System.Generic.Collections.List(Of MyCustomClass)类型对象。

给定整数变量pagesize和pagenumber,如何只查询MyCustomClass对象的任何单页?

2 个答案:

答案 0 :(得分:30)

如果你的linq查询包含你想要显示的所有行,可以使用以下代码:

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

您还可以在对象上创建一个能够编写

的扩展方法
query.Page(2,50)

获取第2页的前50条记录。如果您想要,则信息位于solid code blog.

答案 1 :(得分:5)

嗨有一个叫做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 to实体,您必须先执行Orderby才能使用Skip and Take。