我有一个对象,它看起来是这样的:Linq排序依据,按组排列依次?
public class Student
{
public string Name { get; set; }
public int Grade { get; set; }
}
我想创建以下查询:由学生姓名组的成绩,命令由年级每个学生组,用最高等级秩序组,每组中。
因此,这将是这样的:
A 100
A 80
B 80
B 50
B 40
C 70
C 30
我创建了以下查询:
StudentsGrades.GroupBy(student => student.Name)
.OrderBy(studentGradesGroup => studentGradesGroup.Max(student => student.Grade));
但返回IEnumerable
IGrouping
,我也没有办法列表里面排序,除非我在另一个foreach
查询中执行此操作,并使用AddRange
将结果添加到其他列表中。
有没有更漂亮的方法来做到这一点?
有对VAR组变量没有关键属性。 –
@David B:哎呦,修正了。 –
谢谢!这是完成的查询 - studentGrades.GroupBy(student => student.Name) 。选择(group => new {Students = group.OrderByDescending(x => x.Grade)}) .OrderByDescending(group => group。 Students.First()。Grade) .SelectMany(group => group.Students) – Rita