Порядок 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 .

Есть ли более красивый способ сделать это?

61
задан budi 8 September 2017 в 20:38
поделиться