需要使用 ExecuteQuerySegmentedAsync 的 Azure Table 查询示例
Need example for Azure Table query using ExecuteQuerySegmentedAsync
我只是想让 Azure Table 中的所有实体都匹配某个字段名称,但似乎找不到任何我可以从中学习的最新示例。
最终我想在 HTML table 中显示结果回到我的视图 所以我想 List<ActivityModel>
会感觉。那个或 IEnumerable
因为我不需要更改任何实体(只需阅读)。无论哪种方式,我都在为基本概念而苦苦挣扎。
public async Task<List<ActivityModel>> GetActivitiesAsync(string domainName)
{
CloudTable cloudTable = TableConnection("NodeEvents");
TableQuery<ActivityModel> query = new TableQuery<ActivityModel>().Where(
TableQuery.GenerateFilterCondition("DomainName", QueryComparisons.Equal, domainName)
);
//tried many examples of continuation tokens/etc
}
我遇到的问题 运行 是所有最新的 SDK 都使用 ContinuationToken 进行异步调用,我似乎找不到任何好的示例。这看起来应该是一个简单的任务。感谢任何帮助。
尝试遵循 here 但示例引用的方法和操作不再可用。
这对我有用。我无法在那里找到任何显示最近使用 Azure Tables SDK 的信息。希望这对其他人有用。此处还有更多注意事项:
table 有数千个实体,而我总共只想要大约 500 个。虽然下面的代码有点工作,但它需要一些工作才能使用 .Take(int)
。据我了解,"Take" 方法只会限制每个查询返回的记录数。由于我可能需要处理一个延续令牌,因此将其设置为 5 之类的值在列表末尾之前每个请求只需要 5 个实体。
我添加了一个索引计数器以防万一我们得到超过 500 条记录但是我的测试显示 2000 多条记录与没有它的 5000 多条记录所以这可能是异步性质的结果电话?
public async Task<List<ActivityModel>> GetActivitiesAsync(string domainName)
{
List<ActivityModel> activities = new List<ActivityModel>();
CloudTable cloudTable = TableConnection("NodeEvents");
string filter = TableQuery.GenerateFilterCondition("DomainName", QueryComparisons.Equal, domainName);
TableContinuationToken continuationToken = null;
do
{
var result = await cloudTable.ExecuteQuerySegmentedAsync(new TableQuery<ActivityModel>().Where(filter), continuationToken);
continuationToken = result.ContinuationToken;
int index = 0;
if (result.Results != null)
{
foreach (ActivityModel entity in result.Results)
{
activities.Add(entity);
index++;
if (index == 500)
break;
}
}
} while (continuationToken != null);
return activities;
}
我只是想让 Azure Table 中的所有实体都匹配某个字段名称,但似乎找不到任何我可以从中学习的最新示例。
最终我想在 HTML table 中显示结果回到我的视图 所以我想 List<ActivityModel>
会感觉。那个或 IEnumerable
因为我不需要更改任何实体(只需阅读)。无论哪种方式,我都在为基本概念而苦苦挣扎。
public async Task<List<ActivityModel>> GetActivitiesAsync(string domainName)
{
CloudTable cloudTable = TableConnection("NodeEvents");
TableQuery<ActivityModel> query = new TableQuery<ActivityModel>().Where(
TableQuery.GenerateFilterCondition("DomainName", QueryComparisons.Equal, domainName)
);
//tried many examples of continuation tokens/etc
}
我遇到的问题 运行 是所有最新的 SDK 都使用 ContinuationToken 进行异步调用,我似乎找不到任何好的示例。这看起来应该是一个简单的任务。感谢任何帮助。
尝试遵循 here 但示例引用的方法和操作不再可用。
这对我有用。我无法在那里找到任何显示最近使用 Azure Tables SDK 的信息。希望这对其他人有用。此处还有更多注意事项:
table 有数千个实体,而我总共只想要大约 500 个。虽然下面的代码有点工作,但它需要一些工作才能使用
.Take(int)
。据我了解,"Take" 方法只会限制每个查询返回的记录数。由于我可能需要处理一个延续令牌,因此将其设置为 5 之类的值在列表末尾之前每个请求只需要 5 个实体。我添加了一个索引计数器以防万一我们得到超过 500 条记录但是我的测试显示 2000 多条记录与没有它的 5000 多条记录所以这可能是异步性质的结果电话?
public async Task<List<ActivityModel>> GetActivitiesAsync(string domainName) { List<ActivityModel> activities = new List<ActivityModel>(); CloudTable cloudTable = TableConnection("NodeEvents"); string filter = TableQuery.GenerateFilterCondition("DomainName", QueryComparisons.Equal, domainName); TableContinuationToken continuationToken = null; do { var result = await cloudTable.ExecuteQuerySegmentedAsync(new TableQuery<ActivityModel>().Where(filter), continuationToken); continuationToken = result.ContinuationToken; int index = 0; if (result.Results != null) { foreach (ActivityModel entity in result.Results) { activities.Add(entity); index++; if (index == 500) break; } } } while (continuationToken != null); return activities; }