2008-08-21 67 views
15

我有一个System.Generic.Collections.List(MyCustomClass)类型的对象。如何使用Linq来分页泛型集合?

给定整数变量pagesize和pagenumber,我怎样才能查询MyCustomClass对象的任何单个页面?

+0

我相信你有Take和Skip功能来做到这一点。 – 2008-08-21 21:05:46

回答

29

如果你有你的LINQ查询包含所有要显示的行,该代码可用于:

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

您还可以扩展方法的对象要能写

query.Page(2,50) 

拿到第50条记录第2页的如果是想你想要的信息是关于solid code blog.

5

嗨有一个叫PagedList缺德的事我在观看Rob Conery Screen Cast时得到了。

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实体,您必须先执行Orderby,然后才能使用“跳过并采取”。