升级到实体框架核心3之后,以下代码在尝试获取h.CreationDateTime.Hour
时引发异常,在EF核心2中,此部分在客户端上执行。但是现在,当EF Core 3.0检测到无法在查询中其他任何地方转换的表达式时,它将引发运行时异常。
var x = dbContext.data.GroupBy(c => c.CreationDateTime.Day)
.Select(d => new
{
day = d.Key,
hours = d.GroupBy(h => h.CreationDateTime.Hour).Select(h => new
{
hour= h.Key,
count = h.Count()
}).ToList()
}).ToList();
有没有一种方法可以重写此代码以提供相同的输出。任何帮助表示赞赏。
答案 0 :(得分:1)
根据Microsoft文档,使用.AsEnumerable()将其切换到LINQ以使其成为对象。 https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/
var x = dbContext.data.GroupBy(c => c.CreationDateTime.Day)
.AsEnumerable()
.Select(d => new
{
day = d.Key,
hours = d.GroupBy(h => h.CreationDateTime.Hour).Select(h
=> new
{
hour= h.Key,
count = h.Count()
}).ToList()
}).ToList();