我有List<Student>以下数据的对象
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public int SchoolYearId { get; set; }
public int ClassId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和数据我有这个
public List<Student> StudentData()
{
return new List<Student>
{
new Student
{
StudentId=100,
Name="Shubham",
SchoolYearId=2016,
ClassId=1000
},
new Student
{
StudentId=100,
Name="Shubham",
SchoolYearId=2017,
ClassId=1001
},
new Student
{
StudentId=100,
Name="Shubham",
SchoolYearId=2018,
ClassId=1002
},
new Student
{
StudentId=101,
Name="Arpit",
SchoolYearId=2016,
ClassId=1100
},
new Student
{
StudentId=101,
Name="Arpit",
SchoolYearId=2017,
ClassId=1101
}
};
}
Run Code Online (Sandbox Code Playgroud)
现在,我的要求是,我需要的学生由不同的StudentId地方SchoolYearId是最多为每个学生.
所以我期待的结果
StudentId=100,
Name="Shubham",
SchoolYearId=2018,
ClassId=1002
StudentId=101,
Name="Arpit",
SchoolYearId=2017,
ClassId=1101
Run Code Online (Sandbox Code Playgroud)
你应该首先按(GroupBy)分组,然后在每组中计算argmax ; 唉,Linq没有ArgMax,但它可以很容易地通过模拟Aggregate
var result = StudentData()
.GroupBy(student => student.StudentId)
.Select(group => group
.Aggregate((s, a) => s.SchoolYearId > a.SchoolYearId ? s : a))
.ToList(); // Let's materialize into list
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |