gpt4 book ai didi

c# - EF/Linq - 在分组之前对集合进行排序

转载 作者:太空狗 更新时间:2023-10-30 00:53:30 24 4
gpt4 key购买 nike

我在项目表和审计表之间存在一对多关系。我试图从审计表中挑选出每个项目实体的最新条目。

根据我的理解,我应该能够在按项目 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 的最早审核条目,而不是最新的。

这个查询有问题吗?我是否遗漏了一些明显的东西?

最佳答案

更新

好的,这个怎么样?

ctx.ProjectAudits
.GroupBy(p => p.ProjectId)
.Select(p => p.OrderByDescending(j => j.CreatedDate).FirstOrDefault())
.ToList();

这里没有 VS,但理论上它应该对您的记录进行分组,按创建日期在组内对它们进行排序,然后从每个组中选择第一条记录。

关于c# - EF/Linq - 在分组之前对集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16235049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com