我在日志中发现了一条警告,告诉我由于包含GroupBy()方法而正在评估我的AsQueryable()查询。
我在我的应用中的几个地方使用它,所以想要重构它以获得性能。
我有一个商品表,每个用户可以为作业制作多个商品条目。我想要一个查询,该查询仅返回用户作为IQueryable的每个作业的最新报价列表。
这是我的解决方案:
db.Offers
.AsNoTracking()
.Where(x => x.UserId == userId)
.OrderByDescending(x => x.CreateDate)
.GroupBy(x => x.JobDetailId)
.Select(x => x.First())
.AsQueryable();
它运行正常但似乎EF Core无法将其转换为查询,它必须执行不理想的查询,因为我实际上正在进行进一步的工作以便稍后执行查询,然后在执行之前对其进行分页。
如果我在没有GroupBy
的情况下获得每个JobDetailId的最新优惠,我怎样才能获得相同的效果?我无法看到它是如何完成的。
我正在使用Entity Framework Core 2.0.1