EF Core LINQ表达式无法翻译求助:Guid列表匹配查询报错
解决EF Core查询翻译错误问题
问题原因
你当前使用的LINQ表达式写法listProjectIds.Any(u => u == x.Id)无法被EF Core正确翻译为SQL语句,导致抛出InvalidOperationException。
解决方案
方法1:使用Contains替代Any(推荐)
这是最简洁且兼容性最好的写法,EF Core会将Contains直接翻译为SQL的IN子句:
var projects = _projectRepo.FindAll(x => listProjectIds.Contains(x.Id)).ToList();
方法2:调整Any的比较逻辑(若需保留Any写法)
将实体属性放在比较左侧,确保EF Core能识别并翻译:
var projects = _projectRepo.FindAll(x => listProjectIds.Any(u => x.Id == u)).ToList();
补充说明
Contains是EF Core针对“判断字段是否在指定集合中”场景优化的运算符,相比调整Any写法,它的可读性和性能表现更优,建议优先使用。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

