toPagedList()的顺序不同于LINQ顺序的条款
问题描述:
我有一个小应用程序,它向用户显示shortURL列表。我正在使用ASP.NET MVC3,实体框架和Oracle后端。我还在使用Troy Goode的PagedList库(https://github.com/TroyGoode/PagedList)toPagedList()的顺序不同于LINQ顺序的条款
我希望用户首先看到最后一个条目,这与博客评论的排序方式类似。要做到这一点,我添加了一个“排序依据降”条款的LINQ声明:
var links = from l in db.LINKS
orderby l.ID descending
select l;
在调试“链接”对象的要求是有序(按降序排列,按主键“ID”)。
现在我想的连结清单通过使用.toPagedList()方法的观点:
int pageSize = 3;
int pageNumber = (page ?? 1); // "page" comes from the request, if null set to 1
return View(links.ToPagedList(pageNumber, pageSize));
这个伟大的工程,如果我只有3条记录(请参阅“pageSize的”上图)。但是,当我添加第4条记录时,我会收到意想不到的行为。因为我将pageSize设置为3,所以添加第四条记录意味着将会有2页。 我期望的顺序是如下:
Page 1:
ID: 4
ID: 3
ID: 2
Page 2:
ID: 1
这是不是这样,实际发生的事情是这样的:
Page 1:
ID: 3
ID: 2
ID: 1
Page 2:
ID: 4
所以我的问题,你到底我做错这里错了吗?为什么PagedList不遵循LINQ语句中由“orderby l.ID descending”表达式定义的顺序?这对我来说是莫名其妙的,因为在调试器中很明显,在使用.toPagedLIst()之前,“链接”对象已被正确排序。
任何帮助,非常感谢!
答
你可以尝试:
return View(links.ToPagedList(pageNumber, pageSize, m => m.ID, true));
这是从我的头顶,所以我很抱歉,如果它不能很好地工作......
- 哇,只注意到日期在这一个...我需要停止拖曳未答复的页面,而不按日期排序!
您是否使用Linq-to-Oracle? – 2012-01-11 14:56:00
@GertArnold我使用linq-to-entity我想,因为我使用EF4.2提供程序。我必须承认我是这个东西的新手,所以我不确定两者的区别。我的想法是在Oracle ADO和EF之间,LINQ将在Oracle之上工作。 – 2012-01-17 20:40:18
你有没有找到这个解决方案?我在这里遇到同样的问题,使用SQL数据库后端。 – 2013-04-17 15:12:12