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
。
我有一些来自 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
。