Azure Table存储分页每次要求10个项目



基本上,我在请求Azure表存储实体时试图使分页有效。即按下Next按钮获取下一个10个实体&按上一个按钮将获得前10个实体。Gaurav Mantri的回答相对紧密。但是我的问题是如何从html按钮属性中获取 nextPartitionKey nextrowkey 获取下一个/上一个项目?代码示例将不胜感激。谢谢!

这是我现在拥有的,它基于Pagenumber请求

获得了一系列数据
private async Task<List<UserInfo>> queryPage(CloudTable peopleTable, string item, int pageNumber)
    {
        // Construct the query operation for all customer entities 
        TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, item));
        // Print the fields for each customer.
        TableContinuationToken token = null;
        //TodoItem data = new TodoItem();
        List<UserInfo> data = new List<UserInfo>();
        do
        {
            TableQuerySegment<CustomerEntity> resultSegment = await peopleTable.ExecuteQuerySegmentedAsync(query, token);
            token = resultSegment.ContinuationToken;
            foreach (CustomerEntity entity in resultSegment.Results)
            {
                data.Add(new UserInfo
                {
                    // add data
                });
            }
        } while (token != null);
        //get a subset of all entity
        List<UserInfo> sublist = data.GetRange(0, pageNumber);

        return sublist;
    }

在Gaurav的帮助下设法解决了该问题。这是代码,不是完美而是工作的。

private async Task<List<UserInfo>> queryPage(CloudTable peopleTable, string item, string NextPartitionKey , string NextRowKey, int itemNumber)
    {
        // Construct the query operation for all customer entities 
        TableQuery<CustomerEntity> query = new TableQuery<CustomerEntity>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, item)).Take(itemNumber);

        // Print the fields for each customer.
        List<UserInfo> data = new List<UserInfo>();
        Tabletoken.NextPartitionKey = NextPartitionKey;
        Tabletoken.NextRowKey = NextRowKey;
        TableQuerySegment<CustomerEntity> resultSegment = await peopleTable.ExecuteQuerySegmentedAsync(query, Tabletoken);
        Tabletoken = resultSegment.ContinuationToken;

        foreach (CustomerEntity entity in resultSegment.Results)
        {
            data.Add(new UserInfo
            {
                //add data
            });
        }
        return data;
    }
    private TableContinuationToken Tabletoken = new TableContinuationToken();

并声明它使用元组。

 Tuple<List<UserInfo>, string, string > tuple =
                new Tuple<List<UserInfo>, string, string>(data, Tabletoken.NextPartitionKey, Tabletoken.NextRowKey);

相关内容

最新更新