繁体   English   中英

Any on enums inside Where in Entity Framework Core

[英]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之间添加AsQueryableAsEnumerable ,但这没有帮助。 这是我得到的主要错误:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM