2015/06/26 SelectManyでよかった件を追記
そういうケースありますよね? たとえば
var source = ...何かIO<T>...; source .Select(async x => await HogeAsync(x)) ...省略...
みたいになったとき後続にはTask<T>が流れていきます。俺が欲しいのはTask<T>じゃなくてTの値なんだ!というときにはSelectManyメソッドを使うといい感じにTask<T>からTに変換してくれます。Switchメソッドを呼ぶといい感じにTask<T>からTに変換してくれます。
つまりこんな感じ。
var source = ...何かIO<T>...;
source
.SelectMany(x => HogeAsync(x))
.Subscribe(x =>
{
// xはHogeAsyncの戻り値のTask<T>のTの値
});
メモメモ。