我有两张桌子
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
我正在尝试编写一个查询来获取与最大版本1对应的最大版本1和版本2的记录。对于例如我想要上表中的以下记录 -
Id2 = 1
,Version1 = B
,Version2 = 2
和Date = 4/01/14
Id2 = 2
,Version1 = A
,Version2 = 0
和Date = 8/01/14
任何人都可以帮我解决上述结果的linq。
答案 0 :(得分:0)
根据您描述的规则获取数据将是这样的:
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
}
);