Azure.Data.Tables 12.6.1:QueryAsync如何指定Take值限制返回实体数
在Azure.Data.Tables 12.6.1中限制查询返回的实体数量
在新版Azure.Data.Tables API里,你需要通过TableQuery的Take()方法来指定总返回实体数,以此替代旧版API中查询对象的Take属性。下面是两种实现你需求的具体方式:
方式一:直接遍历实体并计数停止
var limit = 150; // 构建带总数量限制的查询 var query = new TableQuery<T>().Take(limit); var results = table.QueryAsync<T>(query); int currentCount = 0; await foreach (var entity in results.ConfigureAwait(false)) { // 处理你的实体逻辑 currentCount++; // 达到限制后立即停止遍历 if (currentCount >= limit) { break; } }
方式二:按页遍历并控制总数
如果需要用AsPages()处理分页结果,同样先通过TableQuery.Take()设置总限制,再在遍历页面时计数控制:
var limit = 150; var query = new TableQuery<T>().Take(limit); var results = table.QueryAsync<T>(query); int totalEntities = 0; await foreach (var page in results.AsPages().ConfigureAwait(false)) { foreach (var entity in page.Values) { // 处理实体 totalEntities++; if (totalEntities >= limit) { break; } } if (totalEntities >= limit) { break; } }
注意:QueryAsync方法中的maxPerPage参数是用来设置单页返回的实体数,并非总限制数。如果仅设置这个参数,服务器仍会返回所有符合条件的实体,只是按指定页数拆分返回而已。
内容的提问来源于stack exchange,提问作者Brian Rak
相关产品推荐
相关产品推荐

