Paginación de los resultados de la consulta

Completado

La clase Microsoft.Azure.Cosmos.Container admite secuencias asincrónicas para la manera más sencilla y fácil de recorrer en iteración varias páginas de resultados. En escenarios en los que desea paginar manualmente los resultados, puede recuperar el iterador de fuente y leer cada página de resultados.

En primer lugar, defina una cadena de consulta SQL que desee ejecutar y, después, úsela como parámetro de constructor para una variable de tipo QueryDefinition.

string sql = "SELECT * FROM products WHERE p.price > 500";
QueryDefinition query = new (sql);

Luego, compile un objeto de tipo QueryRequestOptions mediante la propiedad MaxItemCount para especificar cuántos elementos desea devolver para cada página de resultados.

QueryRequestOptions options = new()
{
    MaxItemCount = 100
};

Por último, cree un elemento FeedIterator<> con el tipo genérico y el método GetItemQueryIterator.

FeedIterator<Product> iterator = container.GetItemQueryIterator<Product>(query, requestOptions: options);

La clase de iterador de fuente contiene una propiedad booleana HasMoreResults que indica que hay más páginas para devolver el lado servidor. Esta propiedad es ideal para usar en un bucle while. El iterador también tiene un método ReadNextAsync, que obtiene el conjunto de elementos siguiente en una colección enumerable en la que puede recorrer en iteración un bucle foreach.

while(iterator.HasMoreResults)
{
    foreach(Product product in await iterator.ReadNextAsync())
    {
        // Handle individual items
    }
}