Порядок toPagedList () отличается от порядка LINQ - PullRequest
4 голосов
/ 27 декабря 2011

У меня есть небольшое приложение, которое отображает список 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 () используется на нем.

Любая помощь с благодарностью!

1 Ответ

0 голосов
/ 07 сентября 2013

Вы можете попробовать:

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

Это у меня на макушке, так что извините, если не работает идеально ...

- Ух ты, только что заметил дату на этом ... Мне нужно прекратить тралить неотвеченные страницы без сортировки по дате!

...