0

データベーステーブルの代わりにxmlファイルを読み込んで、この方法でページネーションを行っています

XDocument document = XDocument.Load(xmlFilePath);
var query = from r in document.Descendants("orders")
select new
{
    OrderID = r.Element("OrderID").Value,
    CustomerID = r.Element("CustomerID").Value,
    EmployeeID = r.Element("EmployeeID").Value
};
query = query.OrderBy(sortColumn + " " + OrderDirection);
query = query.Skip(lowerPageBoundary - 1 * rowsPerPage).Take(rowsPerPage);

しかし問題は、 MSDNリンクlowerPageBoundaryから取得した別のクラスによるコントローラーの値ですhttps://msdn.microsoft.com/en-us/library/ms171624.aspx?f=255&MSPPError=-2147217396

私はMSDNが提供したのと同じコードに従っていますが、私のページネーションルーチンは以下のコードと互換性がなく、機能していません.

query = query.Skip(lowerPageBoundary - 1 * rowsPerPage).Take(rowsPerPage);

最初の時間lowerPageBoundaryは 0 なので、スキップの値は 0 で、テイクの値は 16 で、同じ行が 2 回目に実行されると、lowerPageBoundary16-16=0になります。

だから、私がここで与えたMSDNリンクを見て、値を制御しているキャッシュクラスを見て、lowerPageBoundaryLINQスキップをカスタマイズしてMSDNコードシナリオを取る方法を提案してください。

ありがとう

4

1 に答える 1

0

lowerPageBoundary から rowsPerPage を差し引く必要はないようです。つまり、最初のページの場合、lowerPageBoundary = 0、rowsPerPage = 16 であるため、0 レコードをスキップして 16 を取得する必要があります。次のコードを使用する必要があります。

query = query.Skip(lowerPageBoundary).Take(rowsPerPage);
于 2015-07-23T02:12:40.540 に答える