涉及分组顺序和连接的Linq
本文关键字:连接 Linq 顺序 | 更新日期: 2023-09-27 18:04:42
我有两个表
tblEquipment
Id1 Id2 Version1 Version2
1 1 - 0
2 1 A 1
3 1 B 1
4 1 B 2
5 2 - 0
6 2 A 0
和另一个表
tblHistory
IdParent Version1 Version2 Date
1 - 0 1/01/14
1 A 1 2/01/14
1 B 1 3/01/14
1 B 2 4/01/14
2 - 0 4/01/14
2 A 0 6/01/14
2 A 0 8/01/14
我正试图编写一个查询,获取与最大Version1对应的最大Version1和最大Version2的记录。例如,我想从上面的表中获取以下记录-
Id2 = 1
, Version1 = B
, Version2 = 2
和Date = 4/01/14
Id2 = 2
, Version1 = A
, Version2 = 0
, Date = 8/01/14
有谁能帮我解决这个问题吗?
根据您描述的规则获取数据将是这样的:
var result = history
.GroupBy( h => h.IdParent )
.Select( h => h.OrderBy( h1 => h1.Version1 )
.ThenBy( h2 => h2.Version2 )
.Last() )
.Select(h => new {
Id2 = h.IdParent,
Version1 = h.Version1,
Version2 = h.Version2,
Date = h.Date
}
);