4

我有一个向用户显示短网址列表的小型应用程序。我正在使用 ASP.NET MVC3、实体框架和 Oracle 后端。我也在使用 Troy Goode 的 PagedList 库(https://github.com/TroyGoode/PagedList

我希望用户首先看到最后一个条目,类似于博客评论的排序方式。为此,我在 LINQ 语句中添加了“orderby descending”子句:

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”)。但是,当我添加第四条记录时,我得到了意外的行为。因为我将 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() 之前已正确排序。

任何帮助是极大的赞赏!

4

1 回答 1

0

你可以试试:

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

它不在我的脑海中,所以如果它不能完美运行,我很抱歉......

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

于 2013-09-06T22:45:43.627 回答