-1

我已经看到分组示例以获取总和或其他聚合函数输出,但我一直在尝试获取与分组标准匹配的“记录”,我不需要聚合值。先说明一下我的情况:

我使用 LINQ to EF,我有一个表,Entity_Revisions 列 Entity_Id、Entity_Revision_Number 和许多其他列。Entity_Revision_Number 就像实体的一个版本。所以我想要一个 LINQ 查询来给我最新版本。以下是数据类型:

 Entity_Id Entity_Revision_Number
 1         0
 1         1
 2         0
 3         0
 3         1

我需要一个返回记录 1,1 2,0 和 3,1 的查询。我需要的查询是

from e in ENTITY_REVISIONs
<some joins>
<some where>
group e by e.ENTITY_ID into g
select g <where max(g.entity_revision_number)>

是否可以将 ENTITY_REVISIONs 类型作为输出而不是以新{} 匿名类型的形式?

4

2 回答 2

3

按 id 分组,按修订号降序排列每个组,并获得每个组的第一个值应该没问题:

var query = from e in ENTITY_REVISIONs
            group e by e.ENTITY_ID into grp
            select grp.OrderByDescending(x => x.entity_revision_number).First();
于 2013-01-26T20:44:58.770 回答
0

我想你正在寻找这个:

var query = 
 from e in ENTITY_REVISIONs
 group e by e.ENTITY_ID into g
 select new {
   Entity_Id = g.Key,
   Entity_Revision_number = (from e in ENTITY_REVISIONs
                             where e.ENTITY_ID == g.Key
                             select e.entity_revision_number).Max()
 };
于 2013-01-25T18:09:54.217 回答