【发布时间】:2020-01-28 17:31:27
【问题描述】:
我在这段代码的 sn-p 上不断收到实体框架错误(一致性类型是枚举):
IQueryable<Examination> examinationsSet = _context.Examinations;
if (consistency.Length > 0)
{
examinationsSet = examinationsSet
.Where(x => consistency.Any(y => (int)y == (int)x.Consistency));
}
我尝试在一致性和Any 之间添加AsQueryable 或AsEnumerable,但这没有帮助。这是我得到的主要错误:
System.InvalidOperationException: „LINQ 表达式 'Where(
来源:数据库集,
谓词:(e) => Any(
来源:(未处理的参数:__consistency_0),
谓词:(y) => (int)y == (int)e.Consistency))'
无法翻译。以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估。
【问题讨论】:
-
Consistency的定义是什么? EF 应该如何编写将一个转换为int的 SQL? -
对不起,我还没有澄清这个一致性的东西是一致性类型,它是一个枚举值。我的错!
-
试过 .Where(x => 一致性.Contains(x.Consistency)) ?在 3.1 中为 int 数组转换为 SQL,但尚未尝试使用 enum。
-
不,但我会 :) 谢谢你的建议!
-
另外,如果这是 3.0,你最好升级到 3.1 预览版本,因为 3.0 对过去在 2.2.x 中工作的 LINQ 查询有很多麻烦
标签: c# entity-framework linq asp.net-core entity-framework-core