Ошибка PagedList: метод OrderBy должен вызываться перед методом Skip.

Вот полное сообщение об ошибке: Метод «Пропустить» поддерживается только для отсортированного ввода в LINQ to Entities. Метод OrderBy должен вызываться перед методом Skip.

В "PurchaseOrderController" я добавил этот код в метод индекса:

// GET: PurchaseOrder
    public ActionResult Index(int? page)
    {
        return View(db.PurchaseOrders.ToPagedList(page ?? 1, 3));
    }

Также в представлении индекса для «Заказов на покупку» я добавил этот код:

    @using PagedList;
@using PagedList.Mvc;
@model IPagedList<PurchaseOrders.Models.PurchaseOrder>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.First().PurchaseRequest_)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.First().Date)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.First().Requestor)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.First().Vendor)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.First().DateOrdered)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.First().ConfirmedWith)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.First().WorkOrder_)
        </th>
        <th></th>
    </tr>

person Theo    schedule 12.08.2014    source источник


Ответы (1)


Вам нужно добавить .OrderBy() в выражение:

return View(db.PurchaseOrders.OrderBy(i => i.SomeProperty).ToPagedList(page ?? 1, 3));

Метод .ToPageList() использует .Skip() и .Take(), поэтому сначала нужно передать упорядоченную коллекцию.

person Community    schedule 12.08.2014
comment
Спасибо. Как вы узнали, что мне нужен .OrderBy()? - person Theo; 12.08.2014
comment
Предположительно, потому что сообщение об ошибке специально сообщило вам об этом? : DI лично прекратил использовать PagedList и просто создал свою собственную модель представления, в которую я могу передавать значения Skip и Take и отслеживать, на какой странице я нахожусь, сколько результатов у меня есть и т. д. Делает его более прозрачным, и я могу использовать модель представления для других вещей тоже. - person Arwin; 12.08.2014