如何使用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。