ドキュメント本文へスキップ
C#

ページネーション

1 ページ、全ページ、または 1 アイテムずつ。

1 ページ

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);}

ListAsync メソッドは Items、HasMore、NextCursor を持つ Page を返し、foreach でその項目を走査できます。次のページを読むには、同じフィルターを付けて NextCursor を cursor: として渡します。

全ページ

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

ListAllAsync メソッドはカーソルを最後までたどり、すべての項目を 1 つのリストで返します。いずれかのページで失敗すると、呼び出し全体が失敗します。

1 件ずつ

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"]);}

IterateAsync メソッドは IAsyncEnumerable<JsonObject> を返します。ループがそこに到達したときにだけ次のページを要求するため、break でリクエストが止まります。ページ分割されるすべてのリストに、走査対象のリストにちなんだ名前で 3 つすべてがあります。たとえば ListEventsAsync には ListAllEventsAsync と IterateEventsAsync があります。

走査は、すでにたどったカーソルを API が繰り返すと停止するため、無限にループすることはありません。