问题描述
我有一个表存储表,其中包含 2000 多个实体。执行表服务查询以一次性获取所有 2000 个实体需要时间。所以我试图使用 LINQ Take 运算符,但它只返回 10 个实体。应该怎么做才能获取并返回接下来的 10 个实体,直到所有 2000 个实体?
var query = (from entity in context.createquery<Customer>("FirstTenEntities")
select entity).Take(10);
解决方法
我认为你应该使用 segmented tokens
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);
这样,如果您将数据返回给客户端,您将需要返回此令牌,以便您可以获取下一批