这可以很好地以最多 1000 个项目的步长对数据进行分页:
var q1 =
(from book in table.CreateQuery<DynamicTableEntity>()
where book.PartitionKey == "TestPartition"
select book).AsTableQuery();
TableContinuationToken continuationToken = null;
do
{
var counter = 0;
var queryResult = q1.ExecuteSegmented(continuationToken);
foreach (var entity in queryResult)
{
Console.WriteLine(entity.Timestamp + " " + ++counter);
}
continuationToken = queryResult.ContinuationToken;
Console.WriteLine("####" + counter);
} while (continuationToken != null);
我真正想做的是首先从最旧的项目开始。换句话说,分页按实体.时间戳升序排列的项目。此查询不起作用:
var q1 =
(from book in table.CreateQuery<DynamicTableEntity>()
where book.PartitionKey == "TestPartition"
select book).OrderBy(x => x.Timestamp).AsTableQuery();
TableContinuationToken continuationToken = null;
do
{
var counter = 0;
var queryResult = q1.ExecuteSegmented(continuationToken);
foreach (var entity in queryResult)
{
Console.WriteLine(entity.Timestamp + " " + ++counter);
}
continuationToken = queryResult.ContinuationToken;
Console.WriteLine("####" + counter);
} while (continuationToken != null);
因为不支持 OrderBy。我可以做些什么来实现这一目标吗?谢谢。
附注:
This可能有帮助。但是,它首先检索最新的项目,而我想先检索最旧的项目。
最佳答案
TableQuery 不支持 order by。您可以找到支持的运算符:Supported operators
关于c# - 使用 azure 表存储进行分页(升序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35534553/