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);

但问题是lowerPageBoundary值是我从MSDN链接获得的另一个类的控制器https://msdn.microsoft.com/en-us/library/ms171624.aspx?f=255&MSPPError=-2147217396

我正在遵循MSDN提供的相同代码,但我的分页例程与以下代码不兼容,也无法正常工作。

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

第一次lowerPageBoundary是 0,所以 skip 有 0 作为值,take 有 16 作为值,当同一行执行第二次lowerPageBoundary是 16-16=0

所以我的请求是有人请查看我在此处提供的 MSDN 链接并查看控制值的缓存类,lowerPageBoundary并建议我如何自定义 LINQ 跳过并针对 MSDN 代码场景进行处理。

谢谢

4

1 回答 1

0

看来您不必从 lowerPageBoundary 中扣除 rowsPerPage。即第一页lowerPageBoundary = 0,rowsPerPage = 16,所以你需要跳过0条记录并取16。对于第二页lowerPageBoundary = 16,你需要跳过16行,然后取16下一个等等。即你应该使用下一个代码:

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