Skip to content

ToListAsync

1. 概要

ToListAsync は、Observable シーケンスのすべての要素を収集し、List<T>Task<List<T>> として返すオペレーターです。シーケンスが完了するまで要素をバッファリングします。

2. シグネチャ

リストへの変換

csharp
public static Task<List<T>> ToListAsync<T>(
    this Observable<T> source,
    CancellationToken cancellationToken = default)

シーケンスのすべての要素を List<T> に収集します。要素は発行された順序で格納されます。

3. マーブルダイアグラム

ToListAsync のマーブルダイアグラム

シーケンスのすべての要素を収集し、完了時にリストを単一の結果として出力します。

4. サンプルコード

csharp
// 基本的な使い方:Observable をリストに変換
var source = new[] { 1, 2, 3, 4, 5 }.ToObservable();

List<int> list = await source.ToListAsync();
Console.WriteLine(string.Join(", ", list)); // 1, 2, 3, 4, 5
csharp
// 変換やフィルタリング後にリストとして収集
List<string> upperNames = await new[] { "alice", "bob", "charlie" }
    .ToObservable()
    .Select(name => name.ToUpper())
    .ToListAsync();

Console.WriteLine(string.Join(", ", upperNames)); // ALICE, BOB, CHARLIE
csharp
// リストとして取得した後に追加操作が可能
List<int> list = await Observable.Range(1, 3).ToListAsync();
list.Add(4);
list.Add(5);
Console.WriteLine(string.Join(", ", list)); // 1, 2, 3, 4, 5
csharp
// 空のシーケンスは空のリストを返す
var empty = await Observable.Empty<int>().ToListAsync();
Console.WriteLine(empty.Count); // 0