ToLookup 拡張メソッド
以前に Partition 関数 - C#練習日記 を作りましたが、 Linq には ToLookup 拡張メソッド があり、このメソッドを使うことで同様のグルーピングを行うことができます。
using System; using System.Linq; class Program { static void Main() { var xs = new[] { 1, 2, 3, 4, 5 }; // 偶数と奇数でグループ分けする var d = xs.ToLookup(e => e % 2 == 0); Console.WriteLine(string.Join(", ", d[true])); // 2, 4 Console.WriteLine(string.Join(", ", d[false])); // 1, 3, 5 // 正の整数とそれ以外でグループ分けする var d2 = xs.ToLookup(e => e > 0); Console.WriteLine(d2[true].Count()); // 5 Console.WriteLine(d2[false].Count()); // 0 } }
ToLookup
の戻り値は、ILookup<TKey, TElement>
です。
各キーに対する要素は IEnumerable<TElement>
で取得できます。