我已经看到分组示例以获得总和或其他聚合函数输出,但我仍然试图获得与分组标准匹配的“记录”,我不需要聚合值。让我解释一下我的情况:
我使用LINQ到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类型作为输出而不是以新的{}匿名类型的形式?
答案 0 :(得分: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();
答案 1 :(得分: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()
};