首页 > 解决方案 > Azure 表存储 - 表服务查询以检索并返回 10 个实体,直到最后一个实体

问题描述

我有一个包含 2000 多个实体的表存储表。执行表服务查询以一次性获取所有 2000 个实体需要时间。所以我试图使用 LINQ Take 运算符,但它只返回 10 个实体。应该如何获取并返回接下来的 10 个实体,直到所有 2000 个实体?

      var query = (from entity in context.CreateQuery<Customer>("FirstTenEntities")  
             select entity).Take(10);  

标签: azureentity-frameworklinqazure-table-storageazure-tablequery

解决方案


我认为您应该使用分段令牌

string filter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Sales");
TableQuery<EmployeeEntity> employeeQuery = new TableQuery<EmployeeEntity>().Where(filter);
employeeQuery.TakeCount = 50;  

TableContinuationToken continuationToken = null;
do
{
    var employees = employeeTable.ExecuteQuerySegmented(employeeQuery, continuationToken);
    foreach (var emp in employees)
    {
        // ...
    }
    
    continuationToken = employees.ContinuationToken;
} while (continuationToken != null);  

这样,如果您将数据返回给客户端,则需要返回此令牌,以便您可以获取下一批


推荐阅读