Reactive Extensionsは、LINQのメソッドも使えます。前にWhereを紹介したので、今回はSelectを紹介します。こいつは、単純に値を変換するのに使えます。
たとえば、有名なFizzBuzz問題を書くと以下のような感じです。
using System; using System.Linq; class Program { static void Main(string[] args) { Observable.Range(1, 100) .Select(i => { if (i % 15 == 0) { return "FizzBuzz"; } if (i % 3 == 0) { return "Fizz"; } if (i % 5 == 0) { return "Buzz"; } return i.ToString(); }) .Subscribe(Console.WriteLine); } }
ここでは、Observable.Rangeで生成したIQueryable