【问题标题】:Azure MobileService Client - ToListAsync not retrieving all dataAzure MobileService 客户端 - ToListAsync 未检索所有数据
【发布时间】:2017-11-26 12:35:24
【问题描述】:
我正在使用Azure 提供的MobileServiceClient 类从我的Azure SQL database 获取数据。当我使用 ToListAsync() 函数时,我似乎只从我的数据库中获取前 60 行左右。有没有解决的办法?
List<riskregister_hazard_template> categories;
categories = await riskTable.Where(r => r.level_1 == _level1)
.Where(r => r.level_2 == _level2).ToListAsync();
【问题讨论】:
标签:
c#
azure
azure-mobile-services
azure-sql-database
mobileserviceclient
【解决方案1】:
请阅读以下摘录:
默认情况下,表控制器中的读取操作将返回最多 50 个项目。如果我们的表存储有更多,那么客户端将需要通过将 ToListAsync 或 ToEnumerableAsync 方法的结果转换为 IQueryResultEnumerable 接口来请求更多。下面的代码展示了如何遍历表中的所有元素。
public async Task<double> CalculateAverageAge()
{
var client = new MobileServiceClient(AppUrl, AppKey);
var table = client.GetTable<Person>();
var sum = 0.0;
var count = 0;
var items = await table.Take(10).ToEnumerableAsync();
while (items != null && items.Count() != 0)
{
count += items.Count();
sum += Enumerable.Sum(items, i => i.Age);
var queryResult = items as IQueryResultEnumerable<Person>;
if (queryResult != null && queryResult.NextLink != null)
{
items = await table.ReadAsync<Person>(queryResult.NextLink);
}
else
{
items = null;
}
}
return sum / count;
}
来源:https://azure.microsoft.com/en-us/blog/better-support-for-paging-with-table-storage-in-azure-mobile-services-net-backend/
希望这会有所帮助。
问候,
阿尔贝托·莫里洛
SQLCoffee.com