[英]How to get maximum version of record from each set using LINQ?
我有以下学生名单:
IList<Student> studentList = new List<Student>()
{
new Student() { StudentID = 1, StudentName = "John", Age = 13 ,Version = 1, Group = 1},
new Student() { StudentID = 2, StudentName = "Moin", Age = 21 ,Version = 2, Group = 1},
new Student() { StudentID = 3, StudentName = "Bill", Age = 18, Version = 1, Group = 2},
new Student() { StudentID = 4, StudentName = "Ram", Age = 20, Version = 1, Group = 3},
new Student() { StudentID = 5, StudentName = "Ron", Age = 15, Version = 1, Group = 5},
new Student() { StudentID = 6, StudentName = "yim", Age = 25, Version = 2, Group = 5},
};
如何获取包含每个组的最大版本的列表? 什么是合适的 LINQ 查询?
输出应如下所示:
{ StudentID = 2, StudentName = "Moin", Age = 21, Version = 2, Group = 1 },
{ StudentID = 3, StudentName = "Bill", Age = 18, Version = 1, Group = 2 },
{ StudentID = 4, StudentName = "Ram", Age = 20, Version = 1, Group = 3 },
{ StudentID = 6, StudentName = "yim", Age = 25, Version = 2, Group = 5 },
怎么样
var results = studentList.GroupBy(x => x.Group)
.Select(x => x.OrderByDescending(xx => xx.Version).First())
.ToList();
按 Group 将它们Group
,然后按Version
降序对分组进行排序,并从分组中获取第一个。
var maxStudents = (from s in studentList
group s by s.Version into g
select new
{
Version = g.Key,
MaxAge = g.Max(s => s.Age)
}).ToList();
// You'll be left with an array like: [{Version=1, MaxAge=21},...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.