我在项目表和审计表之间有一对多的关系。我试图从审计表中挑选出每个项目实体的最新条目。
根据我的理解,我应该能够在按项目 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 的最早审计条目,而不是最新的。
这个查询有问题吗?我错过了一些明显的东西吗?