C# GroupBy-获取TotalCount

C# GroupBy-获取TotalCount,c#,group-by,C#,Group By,我有这样的数据 Column Count Base Percent 1 4 14 28.57142857 2 5 14 35.71428571 3 2 14 14.28571429 4 3 14 21.42857143 资料 尝试获取基本行(非空行总数)和百

我有这样的数据

Column  Count           Base      Percent
 1       4               14      28.57142857
 2       5               14      35.71428571
 3       2               14      14.28571429
 4       3               14      21.42857143
资料

尝试获取基本行(非空行总数)和百分比列以及频率

到目前为止,我们已经实现了这一目标

Column  Count
 1        4
 2        5
 3        2 
 4        3
使用此代码

var result = data.GroupBy(x => x.Field<string>(xx), (row, l) => new Group { Column = row, Count = l.Count() })
台阶

  • 过滤掉不需要的条目(空)
  • 获取总计数
  • 将数据分组
  • 将数据投影到所需的结果
  • 像这样

    var data = new int?[] { 1, 1, 2, 2, 2, 2, 2, null, 1, 1, 3, 3, 4, 4, 4, null, null };
    var filteredData = data.Where(x => x != null);
    var totalCount = filteredData.Count();
    var groups = filteredData.GroupBy(x => x);
    var result = groups.Select(x => new { Value = x.Key, Count = x.Count(), Percent = x.Count() * 100.0 / totalCount });
    

    注意:组是分组项加上键的集合。关键是你选择的分组依据。在本例中,键是一个int。由于组是一个集合,您可以在其上执行类似于
    .Count()
    的操作。

    如果您发现答案对您有帮助,请接受答案。
    var data = new int?[] { 1, 1, 2, 2, 2, 2, 2, null, 1, 1, 3, 3, 4, 4, 4, null, null };
    var filteredData = data.Where(x => x != null);
    var totalCount = filteredData.Count();
    var groups = filteredData.GroupBy(x => x);
    var result = groups.Select(x => new { Value = x.Key, Count = x.Count(), Percent = x.Count() * 100.0 / totalCount });