EF Core 转 SQL group by date without time 无法转换为 SQL

发布于 2025-01-10 21:50:32 字数 1261 浏览 0 评论 0原文

使用 .NET 6 和 EF Core,我有以下代码:

var FileSizeMB_Grouped =
   _db.FileSizeMBs.GroupBy(x => x.CreatedDate.Date);

我从中收到此错误:

无法翻译 LINQ 表达式“DbSet().GroupBy(x => x.CreatedDate.Date)”。以可翻译的形式重写查询,或者通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式切换到客户端计算。请参阅https://go.microsoft.com/fwlink/?linkid=2101038了解更多信息。

我知道原因,如果我使用 .AsEnumerable(),它工作正常,因为无法转换为 SQL,但是...

有什么方法可以直接将其转换为 SQL 而不使用 AsEnumerableRawSqlQuery

我读过很多这样的帖子:

但是...

  • < code>.Date 属性 无法翻译
  • DbFunctions.TruncateTime 找不到
  • Microsoft.EntityFrameworkCore.EF.Functions 找不到
  • EF.Property(x.CreatedDate, "dt").Date 无法翻译

Using .NET 6 and EF Core, I have this code:

var FileSizeMB_Grouped =
   _db.FileSizeMBs.GroupBy(x => x.CreatedDate.Date);

I get this error from it:

The LINQ expression 'DbSet().GroupBy(x => x.CreatedDate.Date)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.

I know the reason, if I use .AsEnumerable(), it works fine because can't be translated to SQL, but...

Is there any way to translate this to SQL directly without using AsEnumerable or RawSqlQuery ?

I have read a lot of posts like these:

But...

  • .Date property can't be translated
  • DbFunctions.TruncateTime can't be found
  • Microsoft.EntityFrameworkCore.EF.Functions can't be found
  • EF.Property<DateTime>(x.CreatedDate, "dt").Date can't be translated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文