http://devlights.hatenablog.com/entry/20091210/p2
http://d.hatena.ne.jp/chiheisen/20111031/1320068429
groupByは渡されたラムダ式の戻り値でグループを作り、「「各グループのリスト」のリスト」を戻す。抽象化されたブレーク処理。
正確には、IEnumerable
「各グループのリスト」は IGrouping
使い方としては以下みたいな感じ。
var list = new[] { new { Name="name1", Group="A" }, new { Name="name2", Group="A" }, new { Name="name3", Group="B" } }; var groupList = list.GroupBy(item => item.Group); // IEnumerable<IGrouping<TKey, TElement>> foreach (var group in groupList) // IGrouping<TKey, TElement> { Console.WriteLine("[group:{0}]", group.Key); foreach (var itemInGroup in group) { Console.WriteLine(itemInGroup.Name); } } // ■出力結果 // [group:A] // name1 // name2 // [group:B] // name3
リストリスト言ってるけど、IEnumerableは正確にはリストじゃなくシーケンスである。