linq - toPagedList() 顺序不同于 LINQ order by 子句

标签 linq asp.net-mvc-3 sql-order-by pagedlist

我有一个小应用程序,可以向用户显示短 URL 列表。我正在使用 ASP.NET MVC3、 Entity Framework 和 Oracle 后端。我也在使用 Troy Goode ( https://github.com/TroyGoode/PagedList ) 的 PagedList 库
我希望用户首先看到最后一个条目,类似于博客评论的排序方式。为此,我在 LINQ 语句中添加了一个“orderby 降序”子句:

var links = from l in db.LINKS
            orderby l.ID descending
            select l;
在调试中,“链接”对象按预期排序(按主键“ID”降序排列)。
现在我想使用 .toPagedList() 方法将此链接列表传递给 View :
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 降序”表达式定义的顺序?这让我感到困惑,因为在调试器中很明显,“链接”对象在使用 .toPagedLIst() 之前已正确排序。
任何帮助是极大的赞赏!

最佳答案

你可以试试:

return View(links.ToPagedList(pageNumber, pageSize, m => m.ID, true));

它不在我的脑海里,所以如果它不能完美地工作,我很抱歉......

-- 哇,刚刚注意到这个日期...我需要停止拖网未回答的页面而不按日期排序!

关于linq - toPagedList() 顺序不同于 LINQ order by 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8638787/

相关文章:

c# - 表达式树 - 不必要的转换为 int32

c# - .Select Vs .Include Vs .Select Many

asp.net-mvc-3 - 重定向到新页面后 session 变量为空

mysql - 按特定内容的存在对结果排序

c# - LINQ 中的 OrderBy 和 Top 性能良好

c# - 如何在泛型方法中获取枚举的数据值?

c# - 使用 LINQ 在列表中平均分配男性和女性

c# - CodeFirst EF4.1 MVC Against legacy database - 多重性冲突

c# - 小数点/货币字段的两位小数

mysql - 按多个字段排序 Magento 自定义集合