我正在努力实现这样的目标
var filteredCarModelsDB = carModelsDB
.Where(modelDB => carModels.Any(v => v.ModelNumber == modelDB.ModelNumber && v.ModelYear == modelDB.ModelYear));
但是英孚抱怨
LINQ 表达式 '编辑评论' 无法翻译。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式切换到客户端评估。
LINQ专家可以指教吗?
P.S 我正在努力避免循环
是的,默认情况下 EF Core 无法翻译它。您可以通过手动操作 expression trees 或使用第三方库(如 LINQKit 和
PredicateBuilder
)来创建自己的过滤器表达式。沿着这些线的东西:
var predicate = PredicateBuilder.New<CarModel>();
foreach (var v in carModels)
{
predicate = predicate.Or(modelDB => v.ModelNumber == modelDB.ModelNumber && v.ModelYear == modelDB.ModelYear);
}
var filteredCarModelsDB = carModelsDB.Where(predicate);