使用LINQ获取组的平均值

用户名

我试图根据列表中每个项目具有的某个值将列表分为不同的组,然后找到这些组中另一个值的平均值。

更好地说,我有一个学生名单:

List<Student> students = new List<Student> {
    new Student { Name="Bob", Level=Level.Sophomore, GPA=3.2f },
    new Student { Name="Cathy", Level=Level.Freshman, GPA=3.6f },
    new Student { Name="James", Level=Level.Senior, GPA=3.8f },
    new Student { Name="Jessica", Level=Level.Senior, GPA=3.7f },
    new Student { Name="Derek", Level=Level.Junior, GPA=2.8f },
    new Student { Name="Sam", Level=Level.Junior, GPA=3.1f }
};

我想按班级对他们进行分组,以便将他们分为大一,大二,大三和大四。然后,我希望能够获得这些群体的平均GPA。

因此,这些学生可能得到的结果是:

Senior: 3.7
Junior: 2.9
Sophomore: 3.2
Freshman : 3.6

我不太确定如何获得此结果。我已经尝试过类似的方法,students.GroupBy(x => x.Level).Average();但是它不起作用。

任何对此的想法将不胜感激。谢谢!

懒惰

您必须使用额外的Select,因此您正在寻找这样的东西:

var result = students.GroupBy(s => s.Level)
                     .Select(g => new {Level=g.Key, Avg=g.Average(s => s.GPA)});

Select(g => new {...}) 为每个组创建一个新的匿名类型的实例。

该类型具有两个属性:

  • Level,这是Key该组财产
  • Avg,即该组的平均GPA

只是“想象”正在使用这种类型(或多或少):

class GroupAverage
{
    public Level Level { get; set; }
    public float Avg { get; set; }
}

var result = students.GroupBy(s => s.Level)
                     .Select(g => new GroupAverage { Level=g.Key, Avg=g.Average(s => s.GPA) } );

但它根本没有名字。


result 就是现在:

在此处输入图片说明

如果需要,可以随意舍入这些值。


要获得Level最高的平均值,只需使用

var highest = result.OrderByDescending(a => a.Avg).First().Level;

(请注意,如果其中没有任何内容,这将导致崩溃students

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ActiveRecord获取组中最近记录的平均值

来自分类Dev

获取每N组的平均值

来自分类Dev

LINQ从IQueryable获取平均值

来自分类Dev

使用列表获取平均值

来自分类Dev

如何使用BigQuery获取每个记录组的最后3条记录的平均值?

来自分类Dev

MongoDB获取考虑文档等级的组的平均值

来自分类Dev

如何使用LINQ获取日期范围内的平均值

来自分类Dev

从列表中获取子列表,并使用linq建立平均值

来自分类Dev

LINQ获取列的平均值并写入csv

来自分类Dev

Linq查询与平均值

来自分类Dev

Linq查询平均值

来自分类Dev

Linq查询与平均值

来自分类Dev

关于使用dplyr的组内平均值

来自分类Dev

如何使用group_by比较组之间的平均值

来自分类Dev

使用ggplot按组映射平均值

来自分类Dev

获取某行的平均值

来自分类Dev

获取数字平均值

来自分类Dev

ICollection <T>使用LINQ计算每小时的平均值

来自分类Dev

ICollection <T>使用LINQ计算每小时的平均值

来自分类Dev

使用for循环获取矩阵中特定点的平均值

来自分类Dev

如何使用dplyr获取两列的平均值?

来自分类Dev

SQL:使用空值获取平均值

来自分类Dev

使用for循环获取矩阵中特定点的平均值

来自分类Dev

如何使用条件参数获取SQL中的平均值

来自分类Dev

使用Renderscript android从位图获取红色通道的平均值

来自分类Dev

使用Aggrerate从Mongo Collection获取平均值

来自分类Dev

groupby 获取平均值,使用动态条件

来自分类Dev

R组数据的滚动平均值

来自分类Dev

特定值组的平均值