[英]Any on enums inside of Where in Entity Framework Core
我在这段代码中不断收到实体框架错误(一致性类型是枚举):
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 表达式“在哪里(
来源:数据库集,
谓词:(e) => Any(
来源:(未处理的参数:__consistency_0),
谓词:(y) => (int)y == (int)e.Consistency))'
无法翻译。 以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估。
当实体框架查询执行时,它被转换为 SQL。 最好在查询之外做尽可能多的逻辑以避免混淆翻译。
尝试这样的事情:
List<int> consistencyNumbers = consistency.Select(item => (int)item).ToList();
IQueryable<Examination> examinationsSet = consistencyNumbers.Count > 0
? _context.Examinations.Where(x => consistencyNumbers.Any(y => y == (int)x.Consistency))
: _context.Examinations;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.