调用之后
GroupBy,您将获得一系列的组
IEnumerable<Grouping>,其中每个分组本身都会公开
Key用于创建组的组,并且也是
IEnumerable<T>原始数据集中的任何项之一。您只需要调用
Count()该分组即可获得小计。
foreach(var line in data.GroupBy(info => info.metric) .Select(group => new { Metric = group.Key, Count = group.Count() }) .OrderBy(x => x.Metric){ Console.WriteLine("{0} {1}", line.Metric, line.Count);}这是一个非常出色的快速回复,但是我在第一行有一个问题,特别是“ data.groupby(info => info.metric)”
我假设您已经有一些
class看起来像的列表/数组
class UserInfo { string name; int metric; ..etc..} ...List<UserInfo> data = ..... ;当您这样做时
data.GroupBy(x =>x.metric),它的意思是“对于
xIEnumerable中定义的每个元素
data,计算
.metric,然后将具有相同度量的所有元素分组到中,
Grouping并返回
IEnumerable所有结果组中的一个。给定示例数据集
<DATA>| Grouping Key (x=>x.metric) |joe 1 01/01/2011 5 | 1jane 0 01/02/2011 9 | 0john 2 01/03/2011 0 | 2jim 3 01/04/2011 1 | 3jean 1 01/05/2011 3 | 1jill 2 01/06/2011 5 | 2jeb 0 01/07/2011 3 | 0jenn 0 01/08/2011 7 | 0
在groupby之后将产生以下结果:
(Group 1): [joe 1 01/01/2011 5, jean 1 01/05/2011 3](Group 0): [jane 0 01/02/2011 9, jeb 0 01/07/2011 3, jenn 0 01/08/2011 7](Group 2): [john 2 01/03/2011 0, jill 2 01/06/2011 5](Group 3): [jim 3 01/04/2011 1]



