C# ASP Net核心Web API:不支持客户端GroupBy
我是新来的,是asp.net核心的新手 我正在使用asp.net core 3.0编写一个web api。我编写了以下API端点代码来检索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()。
数据库
实体的列表,并根据另一个对象类型
中名为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)。服务器端分组支持意味着将该表达式转换为SQLGROUP BY
语句请向上投票问题谢谢,您介意告诉我我将需要的其他软件包吗。谢谢,很不幸,System.Linq.Async库在我的代码的其他部分产生冲突。是的,我在链接的帖子中提到,现在还不推荐。