Linq涉及groupby orderby和join

时间:2014-05-23 11:38:18

标签: c# linq

我有两张桌子

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 = 1Version1 = BVersion2 = 2Date = 4/01/14
Id2 = 2Version1 = AVersion2 = 0Date = 8/01/14

任何人都可以帮我解决上述结果的linq。

1 个答案:

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