首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不支持客户端GroupBy

不支持客户端GroupBy
EN

Stack Overflow用户
提问于 2019-09-27 16:43:53
回答 6查看 48.9K关注 0票数 95

我有以下实体框架核心3.0查询:

代码语言:javascript
运行
复制
var units = await context.Units
  .SelectMany(y => y.UnitsI18N)
  .OrderBy(y => y.Name)
  .GroupBy(y => y.LanguageCode)
  .ToDictionaryAsync(y => y.Key, y => y.Select(z => z.Name));

我得到以下错误:

代码语言:javascript
运行
复制
Client side GroupBy is not supported.

要在客户机上或其中的一部分上运行查询,我将执行以下操作:

代码语言:javascript
运行
复制
var units = context.Units
  .SelectMany(y => y.UnitsI18N)
  .OrderBy(y => y.Name)
  .AsEnumerable()
  .GroupBy(y => y.LanguageCode)
  .ToDictionary(y => y.Key, y => y.Select(z => z.Name));

现在起作用了。

如果我没有在客户端上运行查询,为什么会得到这个错误?

EN

Stack Overflow用户

发布于 2021-10-29 19:33:02

客户端组支持

用EF Core 3.1.15.0测试

以下代码返回Client side GroupBy is not supported.错误:

代码语言:javascript
运行
复制
MyEntity
    .GroupBy(x => x.MyProperty)
    .ToDictionaryAsync(x => x.Key, x => x.Count())
    .Dump();

但出于某种原因,您可以在.Select()之后添加一个.GroupBy(),它编译并运行预期的.GroupBy()

代码语言:javascript
运行
复制
MyEntity
    .GroupBy(x => x.MyProperty)
    .Select(g => new { Key = g.Key, Count = g.Count() })
    .ToDictionaryAsync(x => x.Key, x => x.Count)
    .Dump();

汇编成:

代码语言:javascript
运行
复制
SELECT [t].[MyProperty] AS [Key], COUNT(*) AS [Count]
FROM [dbo].[MyEntity] AS [t]
GROUP BY [t].[MyProperty]

来源:https://stackoverflow.com/a/11564436/14565661

票数 -2
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58138556

复制
相关文章

相似问题

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