涉及分组顺序和连接的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 = 2Date = 4/01/14
Id2 = 2, Version1 = A, Version2 = 0, Date = 8/01/14

有谁能帮我解决这个问题吗?

涉及分组顺序和连接的Linq

根据您描述的规则获取数据将是这样的:

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 
                        } 
            );