かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Reactive Extensions入門 7「Select」

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をIQueryableになるように変換してます。LINQと同じなので簡単ですね。