也许我在问一些废话,但我不明白如何构建LINQ查询,如果第三方方法需要参数limit
和offset
,并返回total
和items
.
到目前为止我所做的是:
Enumerable.
Range(0, maxPages /*1000*/).
Select(i => i * maxLimit /*96*/).
Select(offset => new {
offset = offset,
result = api3.SearchQuery(searchTerm, maxLimit, offset)
}).
TakeWhile(a => a.offset <= a.result.total).
SelectMany(a => a.result.items).
ToArray()
显然,这个查询额外调用了一个api3.SearchQuery
(结果将是result.items.Length == 0
,所以理论上a.offset <= a.result.total
可以用a.result.items.Length > 0
替换).
有没有办法消除多余的电话?