読者です 読者をやめる 読者になる 読者になる

SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

IEnumerable<IEnumerable<T>>をIEnumerable<T>にする

C# LINQ

なんか文章にするとわかりにくいけど、
シーケンスのシーケンスを、フラットなシーケンスにする方法。

うーん、かえって分かりにくい表現になってしまった。
とりあえず、これでできるっぽい。
SelectManyって案外便利かも。

            // シーケンスのシーケンスとして、ジャグ配列を用意
            var lists = new[]
            {
                new []{1, 2, 3, 4},
                new []{1, 3, 5, 7, 9},
                new []{2, 4, 6, 8},
            };

            // SelectManyでフラットなシーケンスにする
            var flat = lists.SelectMany(o => o);

            foreach (var i in flat)
            {
                Console.Write("{0}, ", i);
            }
            Console.WriteLine();