在我的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类实现它?这是通过一个学生名单,计算他们的平均分数,并返回平均最高的学生.谢谢
您可以使用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的回答.