かずきのBlog@hatena

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

2つの配列から「値のペア」を列挙する:LINQ SelectMany編

ネタ元

LINQで別のやり方を思いついた。

using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        string numstr = "123456789";
        string alpstr = "abcdefghi";

        var ret = numstr.SelectMany(
            (ch, i) => new[] { alpstr[i] }, 
            (c1, c2) => Tuple.Create(c1, c2));
        ret.Run(Console.WriteLine);
    }
}

実行結果

(1, a)
(2, b)
(3, c)
(4, d)
(5, e)
(6, f)
(7, g)
(8, h)
(9, i)

SelectManyは強力!!まぁ.NET Framework 4なら素直にZip使えってことなんでしょうけど・・・。
あと、RunメソッドはReactive Extensionsのメソッドです。こいつも便利。