List<int> data = dbContext.table
.GroupBy(x => x.Date)
.OrderByDescending(x => x.Key)
.Take(1)
.SelectMany(x => x.Select(c => c.Id))
.ToList();使用此查询,我希望获得所有i的最新日期。但是我使用EFCore得到了这个查询的一个错误。(但是使用EF而不是EFCore可以很好地工作)。错误说;
“LINQ表达式.无法翻译。要么以可以翻译的形式重写查询,要么通过插入对'AsEnumerable‘、'AsAsyncEnumerable’、'ToList‘或’ToListAsync‘的调用,显式切换到客户端计算。”
我很好奇为什么它在Ef而不是EFCore中工作呢?
发布于 2022-09-28 14:46:41
在SQL中,group BY子句折叠行并每组返回一行。该行只能包含组列和聚合行。.SelectMany(x => x.Select(c => c.Id))在一组查询中没有意义。
我怀疑查询试图检索最新日期的I。在SQL中,需要子查询才能找到最新日期:
SELECT ID
FROM TheTable
Where Date=(SELECT MAX(Date)
FROM TheTable)在EF中,相当于:
var ids=dbContext.TheTable
.Where(t=>t.Date==dbContext.TheTable.Max(r=>r.Date))
.Select(t=>t.Id)
.ToList();https://stackoverflow.com/questions/73883349
复制相似问题