2011-12-26 2 views
4

У меня есть небольшое приложение, которое отображает список shortURL для пользователя. Я использую ASP.NET MVC3, Entity Framework и бэкэнд Oracle. Я также использую библиотеку PagedList от Troy Goode (https://github.com/TroyGoode/PagedList)toPagedList() порядок отличается от порядка LINQ по предложению

Я хочу, чтобы пользователь сначала просмотрел самую последнюю запись, похожую на то, как упорядочиваются комментарии к блогам. Для этого я добавил «OrderBy нисходящую» пункт в заявлении 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 не соответствует порядку, определенному выражением «orderby l.ID по убыванию» в инструкции LINQ? Это меня озадачивает, потому что в отладчике ясно, что объект «ссылок» упорядочен должным образом, прежде чем на него будет использоваться .toPagedLIst().

Любая помощь очень ценится!

+0

Вы используете Linq-to-Oracle? –

+0

@GertArnold Я использую linq-to-entity Я полагаю, поскольку я использую поставщиков EF4.2. Должен признаться, что я новичок в этом, поэтому я не совсем уверен в различии между ними. Я думал, что между Oracle ADO и EF LINQ будет работать над Oracle. –

+1

Вы когда-нибудь находили решение для этого? У меня такая же проблема, используя бэкэнд базы данных SQL. –

ответ

0

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

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

Это у верхней части моей головы, так что мне очень жаль, если он не работает отлично ...

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

Смежные вопросы