У меня есть небольшое приложение, которое отображает список 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().
Любая помощь очень ценится!
Вы используете Linq-to-Oracle? –
@GertArnold Я использую linq-to-entity Я полагаю, поскольку я использую поставщиков EF4.2. Должен признаться, что я новичок в этом, поэтому я не совсем уверен в различии между ними. Я думал, что между Oracle ADO и EF LINQ будет работать над Oracle. –
Вы когда-нибудь находили решение для этого? У меня такая же проблема, используя бэкэнд базы данных SQL. –