かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

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