かずきのBlog@hatena

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

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のメソッドです。こいつも便利。