如何使用Linq分页通用集合?

时间:2020-03-05 18:41:47  来源:igfitidea点击:

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

给定整数变量的页面大小和页面编号,如何仅查询MyCustomClass对象的任何单个页面?

解决方案

回答

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

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

我们还可以在对象上创建扩展方法以便能够编写

query.Page(2,50)

以获得第2页的前50条记录。如果需要,该信息在固定代码博客上。

回答

嗨,有一个邪恶的东西叫做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 to实体,我们必须先执行Orderby,然后才能使用Skip and Take。