プログラマーな日々

プログラマーをやっています。好きなものは、C#, TaskChute Cloud, WorkFlowy, Backlog, AWSです。

IEnumerable.ToLookupメソッド

Enumerable.ToLookup(TSource, TKey) メソッド (IEnumerable(TSource), Func(TSource, TKey)) (System.Linq)
指定されたキー セレクター関数に従って、IEnumerable から Lookup を作成します。

ソースコード

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

namespace LinqSample {
    class Program {
        static void Main(string[] args) {
            Man[] mans = new Man[] { 
                new Man() { Name = "suzuki taro", Age = 20 },
                new Man() { Name = "sato taro", Age = 21 },
                new Man() { Name = "sato jiro", Age = 20 }
            };

            // 苗字をキーにしてグループ分けする。
            ILookup<string, Man> lookup = mans.ToLookup(man => man.Name.Split(' ')[0]);
            
            foreach (IEnumerable<Man> group in lookup) {
                foreach (Man man in group) {
                    Console.Write(man + " ");
                }
                Console.WriteLine();
                Console.WriteLine("-- グループ終端");
            }

            Console.ReadKey();
        }
    }

    class Man {
        public string Name { get; set; }
        public int Age { get; set; }

        public override string ToString() {
            return string.Format("Name = {0}, Age = {1}", Name, Age);
        }
    }
}

実行結果