InvalidOperationException:LINQ 表达式“GroupByShaperExpression:

Posted

技术标签:

【中文标题】InvalidOperationException:LINQ 表达式“GroupByShaperExpression:【英文标题】:InvalidOperationException: The LINQ expression 'GroupByShaperExpression: 【发布时间】:2021-09-15 10:24:24 【问题描述】:
fileMovementRepository.GetAll()
                    .Where(fm => repository.GetAll().Select(f => f.Id).Contains(fm.FileId) && fm.TransferredById == userId)
                    .Include(f => f.User).Include(f => f.File).ThenInclude(f => f.Category)
                    .OrderByDescending(f => f.MovedOn)
                    .GroupBy(f => f.FileId)
                    .Select(f=>f.First())
                    .ToList();

运行时显示以下错误

处理请求时发生未处理的异常。 InvalidOperationException:LINQ 表达式'GroupByShaperExpression: KeySelector: f.FileId, 元素选择器:实体形状表达式: 实体类型:文件移动 值缓冲区表达式: ProjectionBindingExpression:EmptyProjectionMember IsNullable: 假

.First()' 无法翻译。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。请参阅https://go.microsoft.com/fwlink/?linkid=2101038 了解更多信息。 Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)

InvalidOperationException:无法翻译 LINQ 表达式“GroupByShaperExpression: KeySelector: f.FileId, ElementSelector:EntityShaperExpression: EntityType: FileMovement ValueBufferExpression: ProjectionBindingExpression: EmptyProjectionMember IsNullable: False .First()”。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。请参阅https://go.microsoft.com/fwlink/?linkid=2101038 了解更多信息。

【问题讨论】:

您是否点击了错误消息中的链接? 请查看有关此错误的许多其他问题。不支持此 GroupBy 用法。 【参考方案1】:

GroupBy 之前使用ToList(),它将按预期工作。

fileMovementRepository.GetAll()
                .Where(fm => repository.GetAll().Select(f => f.Id).Contains(fm.FileId) && fm.TransferredById == userId)
                .Include(f => f.User).Include(f => f.File).ThenInclude(f => f.Category)
                .OrderByDescending(f => f.MovedOn)
                .ToList()
                .GroupBy(f => f.FileId)
                .Select(f=>f.First())
                .ToList();

【讨论】:

以上是关于InvalidOperationException:LINQ 表达式“GroupByShaperExpression:的主要内容,如果未能解决你的问题,请参考以下文章

InvalidOperationException:未找到名为“Bearer”的 AuthorizationPolicy

为啥这个 OdbcConnection 会抛出 System.InvalidOperationException?

System.InvalidOperationException: '绑定实例已经被关联到监听

使用 PerformanceCounters 时获取 InvalidOperationException [关闭]

System.InvalidOperationException: 'XML 文档 (1, 1) 中存在错误。'

InvalidOperationException:LINQ 表达式“GroupByShaperExpression: