C# ASP Net核心Web API:不支持客户端GroupBy

C# ASP Net核心Web API:不支持客户端GroupBy,c#,entity-framework-core,ef-core-3.0,ef-core-3.1,C#,Entity Framework Core,Ef Core 3.0,Ef Core 3.1,我是新来的,是asp.net核心的新手 我正在使用asp.net core 3.0编写一个web api。我编写了以下API端点代码来检索数据库实体的列表,并根据另一个对象类型中名为Value的字段对它们进行分组 //GET:api/Databases/graph [HttpGet(“图形”)] 公共异步任务,但没有多大帮助 请您支持。简而言之,EF Core 3.0不支持这种类型的GroupBy 您需要在该运算符之前显式切换到客户端求值。对于同步版本,它只需插入.AsEnumerable()。

我是新来的,是asp.net核心的新手

我正在使用asp.net core 3.0编写一个web api。我编写了以下API端点代码来检索
数据库
实体的列表,并根据另一个对象
类型
中名为
Value
的字段对它们进行分组

//GET:api/Databases/graph
[HttpGet(“图形”)]
公共异步任务,但没有多大帮助


请您支持。

简而言之,EF Core 3.0不支持这种类型的
GroupBy

您需要在该运算符之前显式切换到客户端求值。对于同步版本,它只需插入
.AsEnumerable()
。对于异步版本,这并不是那么容易-有
asasasyncenumerable()
方法,但是您需要额外的包来获得
GroupBy
和其他可用的LINQ操作符

解决这个问题的最简单的方法可能是使用
ToListAsync()
来完成异步部分,然后使用常规的LINQ to对象来完成其余部分

e、 像这样的

return (await _context.Databases
    .Include(t => t.Type)
    .Where(d => d.Type.Code == "DATABASE_TYPE")
    .ToListAsync())
    .GroupBy(d => d.Type.Value);


我所说的附加方案是。有关更多信息,请参阅。

链接文章中已回答了该问题。哪一部分你不理解或没有帮助你?EF Core 3.x不支持服务器端分组(但…),这就是答案。再次问同样的问题不会改变答案:它不受支持。分组或运行原始查询,或等待EF Core实现it@Tseng您可能是指支持客户端no、客户端(或客户端求值)以及获取未分组的数据并在内存中分组(通过Linq到对象而不是Linq到sql)。服务器端分组支持意味着将该表达式转换为SQL
GROUP BY
语句请向上投票问题谢谢,您介意告诉我我将需要的其他软件包吗。谢谢,很不幸,System.Linq.Async库在我的代码的其他部分产生冲突。是的,我在链接的帖子中提到,现在还不推荐。