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

本文关键字:查询 -分 帮助 EF | 更新日期: 2023-09-27 17:59:03

我有数据表(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+Reve是唯一的
注意:表中还有其他字段,我需要获取这些字段才能得到结果。理想的情况是获得一个iquryable(Doc是模型类),我想在内部查询中选择ID,然后使用它来获得文档的iquryaable。

提前感谢

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

试试这个:

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是可查询的。