您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

LINQ与groupby和count

LINQ与groupby和count

调用之后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  | 1
jane 0 01/02/2011 9  | 0
john 2 01/03/2011 0  | 2
jim  3 01/04/2011 1  | 3
jean 1 01/05/2011 3  | 1
jill 2 01/06/2011 5  | 2
jeb  0 01/07/2011 3  | 0
jenn 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]
其他 2022/1/1 18:13:41 有647人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶