首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EFCore -按以下方式选择

EFCore -按以下方式选择
EN

Stack Overflow用户
提问于 2022-09-28 14:35:17
回答 1查看 57关注 0票数 1
代码语言:javascript
复制
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中工作呢?

EN

回答 1

Stack Overflow用户

发布于 2022-09-28 14:46:41

在SQL中,group BY子句折叠行并每组返回一行。该行只能包含组列和聚合行。.SelectMany(x => x.Select(c => c.Id))在一组查询中没有意义。

我怀疑查询试图检索最新日期的I。在SQL中,需要子查询才能找到最新日期:

代码语言:javascript
复制
SELECT ID
FROM TheTable
Where Date=(SELECT MAX(Date) 
            FROM TheTable)

在EF中,相当于:

代码语言:javascript
复制
var ids=dbContext.TheTable
                 .Where(t=>t.Date==dbContext.TheTable.Max(r=>r.Date))
                 .Select(t=>t.Id)
                 .ToList();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73883349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档