C# 从Azure表存储中获取1000多个数据集
我有一个Azure函数来对Azure表存储中的数据集执行一些操作 由于分组在Azure表存储中不起作用,我必须获取表中的所有数据集,并在我的C#代码中执行我想要的操作(分组、筛选) 但每个查询只检索前1000个数据集。 我如何获取我的所有数据集?或者以1000个数据集的形式在表中迭代,最终获取所有数据集C# 从Azure表存储中获取1000多个数据集,c#,.net-core,azure-functions,azure-table-storage,azure-tablequery,C#,.net Core,Azure Functions,Azure Table Storage,Azure Tablequery,我有一个Azure函数来对Azure表存储中的数据集执行一些操作 由于分组在Azure表存储中不起作用,我必须获取表中的所有数据集,并在我的C#代码中执行我想要的操作(分组、筛选) 但每个查询只检索前1000个数据集。 我如何获取我的所有数据集?或者以1000个数据集的形式在表中迭代,最终获取所有数据集 TableQuery<Models.product_item> query = new TableQuery<Models.product_item>()
TableQuery<Models.product_item> query = new TableQuery<Models.product_item>()
.Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, myPartitionKey));
var queryResult = myTable.ExecuteQuery(query);
TableQuery query=newtablequery()
.Where(TableQuery.GenerateFilterCondition(“PartitionKey”,QueryComparisons.Equal,myPartitionKey));
var queryResult=myTable.ExecuteQuery(查询);
你不能。可能是为了避免长时间运行的查询
您可以在此处阅读其他限制:当您的查询未在特定限制内完成时(最多5秒,最多1000行,请参阅),您将在结果对象中收到一个
ContinuationToken
。将此令牌传递给另一个查询以继续第一个查询并获取下一组行
此扩展方法为您完成以下任务:
public static class QueryExtensions
{
public static async Task<IEnumerable<TElement>> ExecuteQueryAllElementsAsync<TElement>(this CloudTable table, TableQuery<TElement> tableQuery)
where TElement : ITableEntity, new()
{
TableContinuationToken continuationToken = default(TableContinuationToken);
var results = new List<TElement>(0);
tableQuery.TakeCount = 500;
do
{
//Execute the next query segment async.
var queryResult = await table.ExecuteQuerySegmentedAsync(tableQuery, continuationToken);
//Set exact results list capacity with result count.
results.Capacity += queryResult.Results.Count;
results.AddRange(queryResult.Results);
continuationToken = queryResult.ContinuationToken;
} while (continuationToken != null);
return results;
}
}
var queryResult = await myTable.ExecuteQueryAllElementsAsync(query);