0

我已经为我现有的数据引擎创建了一个 OData 包装层。所有操作包括:排序过滤和分页都直接传递给我现有的引擎并检索所需的数据。

问题在于分页:第二页结果是从我现有的引擎中检索的,但后来 odata 跳过了“skip =”的数量并将空集合发送到客户端。例如:我正在分页“产品”,数据库中有 100 个。第一个页面获取 10 到服务器,跳过 0 并将 10 发送到客户端。第二页将 10 发送到服务器,跳过 10 并且不向客户发送任何内容。

有没有解决的办法?

ps 页面大小可根据客户要求而有所不同。我不能在服务器上硬编码它。

4

1 回答 1

0

我在我的代码中找到了这个方法调用并添加了前两行:

public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
    {
        if (expression.ToString().Contains(".Skip("))
            expression = (expression as MethodCallExpression).Arguments[0];

        return new DSPLinqQuery<TElement>(this, expression);
    }

这样,正在构建的较大表达式将不包含 skip(10)

于 2013-05-26T14:18:54.980 回答