我通过创建一个扩展方法解决了这个问题,该方法IAsyncEnumerable
将返回一个IAsyncEnumerable
. 调用后AsPages()
,AsyncPageable<T> query
您IAsyncEnumerable<Page<T>>
可以使用此方法从中获取第一页。
static class IAsyncEnumerableExtensions
{
public static async Task<T?> FirstOrDefault<T>(this IAsyncEnumerable<T> asyncEnumerable)
{
await foreach (var item in asyncEnumerable)
{
return item;
}
return default;
}
}
该Page<T>
对象具有continuationToken
可以传递给AsPages(string)
方法的属性,因此您可以通过以下方式获取下一页:
query.AsPages(continuationToken).FirstOrDefault();
为了能够获取上一页,您必须缓存 continuationToken,或者只调用第一页query.AsPages().FirstOrDefault();
(没有 continuationToken)。
查看文档以获取更多详细信息(单击参数和返回类型)。
我将此示例用作令牌缓存的灵感。您还可以使用 Microsoft.Azure.Cosmos.Table 库查找示例,此处使用了与 ContinuationTokens 类似的概念。