我有一个项目表和一个审计表之间的一对多关系。我试图从审计表中挑选出每个项目实体的最新条目。
据我所知,要做到这一点,我应该能够按日期对我的审计集合进行排序,然后按项目ID进行分组,以便我可以选择每个组(项目ID)的第一条目录以获取最新的条目。
但是当我运行我的ef/linq查询时,结果不正确,而且似乎忽略了order-by - 即使生成的sql也不包括order by语句。
这是我尝试过的简单示例。
据我所知,要做到这一点,我应该能够按日期对我的审计集合进行排序,然后按项目ID进行分组,以便我可以选择每个组(项目ID)的第一条目录以获取最新的条目。
但是当我运行我的ef/linq查询时,结果不正确,而且似乎忽略了order-by - 即使生成的sql也不包括order by语句。
这是我尝试过的简单示例。
using (var ctx = new MyDbContext())
{
var audit = from a in ctx.ProjectAudits
orderby a.CreatedDate descending
group a by a.ProjectId into grp
select grp.FirstOrDefault();
var resultsList = audit.ToList();
}
查询结果总是返回每个项目ID的最早审核条目,而不是最新的。
这个查询有什么问题吗?我是否漏掉了一些明显的东西?