У меня есть небольшое приложение, которое отображает список shortURL для пользователя.Я использую ASP.NET MVC3, Entity Framework и серверную часть Oracle.Я также использую библиотеку PagedList от Troy Goode (https://github.com/TroyGoode/PagedList)
. Я хочу, чтобы пользователь сначала увидел самую последнюю запись, аналогично тому, как заказываются комментарии в блоге. Для этого я добавилПредложение "orderby по убыванию" для оператора LINQ:
var links = from l in db.LINKS
orderby l.ID descending
select l;
При отладке объект "links" упорядочивается в соответствии с ожиданиями (в порядке убывания по первичному ключу "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 не следуетпорядок, определенный выражением "orderby l.ID по убыванию"в заявлении LINQ?Это сбивает с толку меня, потому что в отладчике ясно, что объект "links" упорядочен должным образом до того, как .toPagedLIst () используется на нем.
Любая помощь с благодарностью!