[英]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.