15

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

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

4

2 回答 2

30

如果您的 linq-query 包含要显示的所有行,则可以使用以下代码:

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

您还可以在对象上制作扩展方法以便能够编写

query.Page(2,50)

获取第 2 页的前 50 条记录。如果您想要,请参阅solid code blog 上的信息。

于 2008-08-21T23:02:29.273 回答
5

嗨,我在观看 Rob Conery Screen Cast 时得到了一个叫做 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);

Hope it helps.. I'm using it now and it works ok for linq to entities. With Linq to entities you have to perform an Orderby before you can use Skip and Take.

于 2009-01-14T11:57:00.170 回答