Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

IEnumerable.SelectManyメソッド

Enumerable.SelectMany(TSource, TResult) メソッド (IEnumerable(TSource), Func(TSource, IEnumerable(TResult))) (System.Linq)
シーケンスの各要素を IEnumerable に射影し、結果のシーケンスを 1 つのシーケンスに平坦化します。

ソースコード

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

namespace LinqSample {
    class Program {
        static void Main(string[] args) {
            Group[] groups = new Group[] {
                new Group { ID = 1, Members = new List<string>() { "suzuki taro", "suzuki jiro", "sato taro" } },
                new Group { ID = 2, Members = new List<string>() { "sato jiro", "watanabe taro" } },
            };

            // メンバー名の各シーケンスを1つのシーケンスにする。
            IEnumerable<string> q = groups.SelectMany(group => group.Members);

            foreach (string name in q) {
                Console.WriteLine(name);
            }
            Console.ReadKey();
        }
    }

    class Group {
        public int ID { get; set; }
        public List<string> Members { get; set; }
    }
}

実行結果