在对象列表的数组字段中查找最大元素

Find the max element in array field in the list of objects

假设我有一个 class 简单定义的学生:

public string Name { get; set; }
public int[] Marks { get; set; }

现在我创建一个学生列表:

List<Student> students = new List<User>();
students.Add(new Student("John", { 3, 4, 5, 5, 4 }));
students.Add(new Student("Adam", { 2, 5, 5, 1, 3 }));
students.Add(new Student("Katy", { 6, 3, 2, 2, 3 }));

现在,我需要创建一个 LINQ 查询来检索所有学生中最好的单项分数。在本例中,它将是 6,因为这是所有数组中的最大值。 我想到了这样的事情:

var query =
    from student in students
    where student.Marks is not null
    group student by student.Marks into studentMarks
    group studentMarks.Key.Max() by studentMarks.Key.Max() into studentMarks
    orderby studentMarks.Key descending
    select studentMarks.Key;

Console.WriteLine(query.ElementAt(0)); // output: 6

现在,我怎样才能以更好的方式编写它,以便它只输出单个 int,所以我可以简单地说:

Console.WriteLine(query);

使用SelectMany:

int topMark = students.SelectMany(s => s.Marks).Max()  // 6