我有一个 System.Generic.Collections.List(Of MyCustomClass) 类型的对象。
给定整数变量 pagesize 和 pagenumber,我该如何查询仅属于 MyCustomClass 对象的任意单个页面?
如果您已经拥有包含您想要展示的所有行的 Linq 查询,可以使用以下代码:
If you have your linq-query that contains all the rows you want to display, this code can be used:
var pageNum = 3;
var pageSize = 20;
query = query.Skip((pageNum - 1) * pageSize).Take(pageSize);
你也可以在对象上创建一个扩展方法,以便能够编写:
query.Page(2,50)
如果您想获取第2页的前50条记录,那么相关信息可以在solid code博客上找到。
你好,这里有一个名为PagedList的神奇东西,我是在看Rob Conery的屏幕录像时得到的。
http://blog.wekeroad.com/2007/12/10/aspnet-mvc-pagedlistt/
它内置了所有跳过和取出数据的功能。
你只需要调用:
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 entities时,您必须先进行Orderby排序,然后才能使用Skip和Take。