获取列表中数字的最高平均值

Uni*_*ese 1 c# linq

在我的WCF界面中,我有一个类定义

[DataContract]
public class Student
{
    [DataMember]
    public int Sid { get; set;}
    [DataMember]
    public string StudentName { get; set;}
    [DataMember]
    public int M1 { get; set;}
    [DataMember]
    public int M2 { get; set; }
    [DataMember]
    public int M3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有这个方法

     [OperationContract]
     Student GetTopper(List<Student> LS);
Run Code Online (Sandbox Code Playgroud)

上述方法应收集类型列表<Student>,计算每个学生的M1,M2和M3的平均值,并返回平均值最高的学生.

这就是我目前对GetTopper方法的实现

   public Student GetTopper(List<Student> LS)
        {
        foreach (Student s in LS)
        {
            double Avg = (s.M1 + s.M2 + s.M3) / 3.0;

        }   
    }
Run Code Online (Sandbox Code Playgroud)

如何使用GetTopper类实现它?这是通过一个学生名单,计算他们的平均分数,并返回平均最高的学生.谢谢

Eri*_*ric 6

您可以使用desc命令然后通过linq获取第一个

public Student GetTopper(List<Student> LS)
{
    if(LS == null) return null;
    return LS.OrderByDescending(s => (s.M1 + s.M2 + s.M3) / 3.0).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

编辑

/ 3.0应是多余的,它是相同的,以确定优等生最高总和分数或最高平均得分.感谢Dmitry Bychenko的回答.