かずきのBlog@hatena

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

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