かずきのBlog@hatena

日本マイクロソフトに勤めています。このブログは個人ブログなので、ここに書いている内容は個人的な意見で会社の公式見解ではない点にご注意ください。好きなものは XAML と C# 。苦手なものは型の無い言語です。

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と同じなので簡単ですね。