Aller à la documentation
C#

Pagination

Une page, toutes les pages, ou un élément à la fois.

Une page

page.cs
var page = await client.Threads.ListAsync(folder: "inbox", limit: 25); foreach (var thread in page){    Console.WriteLine(thread["id"]);} if (page.HasMore){    var next = await client.Threads.ListAsync(folder: "inbox", limit: 25, cursor: page.NextCursor);     Console.WriteLine(next.Count);}

Une méthode ListAsync renvoie une Page avec Items, HasMore et NextCursor, et foreach parcourt ses éléments. Repassez NextCursor comme cursor:, avec les mêmes filtres, pour lire la page suivante.

Toutes les pages

all.cs
var failed = await client.Emails.ListAllAsync(status: new[] { "failed" }); Console.WriteLine($"{failed.Count} messages failed");

Une méthode ListAllAsync suit le curseur jusqu'au bout et renvoie tous les éléments dans une seule liste. Un échec sur une page fait échouer tout l'appel.

Un élément à la fois

iterate.cs
await foreach (var contact in client.Contacts.IterateAsync(limit: 100)){    if ((string?)contact["email"] == "[email protected]")    {        break;    }} await foreach (var entry in client.Emails.IterateEventsAsync("msg_3f9a1c07d2b84e6a9c5b1f20")){    Console.WriteLine(entry["type"]);}

Une méthode IterateAsync renvoie un IAsyncEnumerable<JsonObject>, qui ne demande la page suivante que lorsque la boucle y arrive : un break arrête donc les requêtes. Chaque liste paginée a les trois, nommées d'après la liste qu'elles parcourent : ListAllEventsAsync et IterateEventsAsync à côté de ListEventsAsync.

Un parcours s'arrête quand l'API répète un curseur qu'il a déjà suivi : il ne peut donc jamais tourner sans fin.