【问题标题】:OData Core Lib - how to consume server-side pagingOData Core Lib - 如何使用服务器端分页
【发布时间】:2020-06-06 18:22:07
【问题描述】:

如何使用 OData Core 客户端库使用服务器端分页?

使用下面的代码,我可以获取第一个页面大小的集合,但我想获取集合的其余部分(下一页)。当我解析 odata 响应时,我可以看到 nextPageLink 和 skipToken 值(所以它是服务器端分页)。现在我想使用 OData Core 客户端库 API 使用分页。 (我无法在它的文档中找到它。只有关于如何解析参数的信息)。

var serviceRoot = "https://...";
var dataServiceContext = new GraphService(new Uri(serviceRoot));

var theCollection = await dataServiceContext.CollectionProperty.ExecuteAsync();

var countOfFristPageCollection = theCollection.Count();

【问题讨论】:

    标签: .net-core odata


    【解决方案1】:

    最后我在 lib 的文档 (here link) 中发现了这一点,但有错误(他们使用同步版本的 Execute 方法,而他们的 API 仅提供异步 - 我发布了它们)。

    这是使用异步的正确代码:

    var serviceRoot = "https://...";
    var dataServiceContext = new MyOdataService(new Uri(serviceRoot));
    DataServiceQueryContinuation<user> token = null;
    
    var resp = (await dataServiceContext.users.ExecuteAsync()) as QueryOperationResponse<user>;
    
    List<user> list = new List<user>();
    
    list.AddRange(resp.ToList());
    
    while ((token = resp.GetContinuation()) != null)
    {
        resp = await dataServiceContext.ExecuteAsync<user>(token) as QueryOperationResponse<user>;
    
        list.AddRange(resp.ToList());
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-16
      • 2016-05-04
      相关资源
      最近更新 更多