web-dev-qa-db-ja.com

PagedListエラー:メソッド「OrderBy」はメソッド「Skip」の前に呼び出す必要があります

完全なエラーメッセージは次のとおりです。メソッド 'Skip'は、LINQ to Entitiesのソートされた入力でのみサポートされています。メソッド 'Skip'の前にメソッド 'OrderBy'を呼び出す必要があります

「PurchaseOrderController」で、このコードをindexメソッドに追加しました。

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

「PurchaseOrders」のインデックスビューにも、次のコードを追加しました。

    @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>
15
Theo

式に.OrderBy()を追加する必要があります。

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

.ToPageList()メソッドは.Skip()および.Take()を使用するため、最初に順序付けられたコレクションを渡す必要があります。

33
user3559349