我正在使用Podio提供的.Net API。默认情况下,每个请求只能获取20个项目。如果我们将过滤器限制设置为500(这是podio的最大值),我可以为所有项目获取500个项目。但在这里,我面临着如何迭代这些项目集合的问题 0到500 501至1000 1001等等...... 我正在获得podio项目的总数 以下是我的代码
int totalItemCount = 1750; //For this example
int totIterations = totalItemCount / 500;
int offsetValue = 0;
for (int i = 0; i < totIterations + 1; i++)
{
filterOption.Limit = 500;
filterOption.Offset = offsetValue;
filterOption.Remember = true;
filteredContent = await _Podio.ItemService.FilterItems(appId, filterOption);
//Some Code here
offsetValue += 500;
}
每次迭代时都会获取相同的项目。 预计在500之后应该从501开始到下500个项目...... 任何人都可以提供帮助,因为.Net podio API的文档非常有限
答案 0 :(得分:1)
请尝试这样的事情:
int limit = 1;
int offset = 500;
var items_1 = client.ItemService.FilterItems(appId, limit, offset);
var items_2 = client.ItemService.FilterItems(appId, limit, offset + 1);
并确认items_1
和items_2
实际上是不同的项目。
FilterItems
方法的来源位于:https://github.com/podio/podio-dotnet/blob/master/Source/Podio%20.NET/Services/ItemService.cs#L280
答案 1 :(得分:0)
如果您尝试获取所有项目,请执行以下操作:
int limit = 500;
int offset = 0;
bool continueOperation = true;
var allItems = new List<Item>();
do{
PodioCollection<Item> filteredItems = await _podioClient.ItemService.FilterItems(appId, limit, offset);
offset = offset + limit;
allItems.AddRange(filteredItems.Items);
if (filteredItems == null || filteredItems.Filtered <= offset)
{
continueOperation = false;
}
} while (continueOperation);