Azure Table 获得更多 1000 项

Azure Table get more 1000 items

我有一些来自 Azure 表的 select 数据的代码:

 IQueryable<DataEntity> data =
                    (from e in table.CreateQuery<DataEntity>()
                     where
                         String.Compare(e.PartitionKey,
                             string.Format("{0:0000000000000000000}", start),
                             StringComparison.Ordinal) >= 0 &&
                         String.Compare(e.PartitionKey, string.Format("{0:0000000000000000000}", end),
                             StringComparison.Ordinal) <= 0
                     select e);
                data.AsTableQuery().Execute();

效果不错,但是 return 只有 1000 件,我不知道如何 return 更多件。 我找到了这段代码:

  do
            {
                TableQuerySegment<DataEntity> tableQueryResult =
                    await table.ExecuteQuerySegmentedAsync(tableQuery, continuationToken);

                continuationToken = tableQueryResult.ContinuationToken;

                allCount += tableQueryResult.Results.Count;

            } while (continuationToken != null);

但我不知道如何使用 ExecuteQuerySegmentedAsync 重新编写我的代码。 以及如何获得ContinuationToken? 请帮我解决这个问题。

试试这个代码:

        var account = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
        var tableClient = account.CreateCloudTableClient();
        var table = tableClient.GetTableReference("Address");
        TableContinuationToken token = null;
        IQueryable<DynamicTableEntity> data = (
            from e in table.CreateQuery<DynamicTableEntity>()
            select e
            );
        long entitiesCount = 0;
        do
        {
            var result = data.AsTableQuery().ExecuteSegmented(token);
            token = result.ContinuationToken;
            var entities = result.Results;
            entitiesCount += entities.Count;
            Console.WriteLine(entitiesCount + " entities fetched");
        } while (token != null );

基本上您需要调用 ExecuteSegmented 方法而不是 Execute