EF查询帮助 - 分组和子查询

时间:2014-04-20 16:43:02

标签: c# linq entity-framework

我有数据表(DOCs,在我的上下文中是DBSet),下面有数据

ID   Code   Rev
1    A1     1
2    A1     2
3    A1     3
4    A3     1
5    A2     1
6    A2     2

我需要选择具有最高版本的每个代码记录的记录。我的预期结果是

ID   Code   Rev
3    A1     3
6    A2     2
4    A3     1

ID列是表格的PK,Code + Rev是唯一的 注意:表中还有其他字段需要获取结果。理想的是获得一个iqueryable(Doc是模型类),我想到在内部查询中选择ID,然后使用它来获取docs的iqueryable。

先谢谢

1 个答案:

答案 0 :(得分:1)

试试这个:

var res = from r in DOCs
          where (from c in DOCs
                 group c by c.Code into g
                 select new {
                    localCode = g.Key,
                    localRev = g.Max(t => t.Rev)
                 }).Any(x => x.localCode == r.Code && x.localRev == r.Rev)
          select r;

res是IQueryable。