c# - 如何使用 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
分组,然后按Version
降序排列分组,然后从分组中取出第一个。
推荐阅读
- neural-network - apache ignite 中的数据规范化
- vue.js - 更新 vue 组件上的路径 ckeditor
- html - 我正在尝试将图标与三列 CSS 网格的每列中心的文本对齐,但图标和文本稍微偏离中心
- reactjs - 哪个更有效:对经常更新的对象使用多个 useState 挂钩或一个 useState?
- groovy - 在 Spock 中,如何根据某些条件选择数据表中的某些行来运行?
- python - 有没有办法更新使用 cx_freeze 创建的应用程序?
- python - 任何简单的方法来创建包含不固定数量值的行的 DataFrame?
- selenium - Chrome浏览器打开,但在硒之后没有任何反应
- python - 阿拉伯语 nltk 将文本拆分为字母
- powerbi-desktop - Power BI:如何对条形图按 7 天分组分组以从星期一而不是星期日开始?