EF complex where query with multiple fields and multiple values

问题描述 投票:0回答:1

我正在努力实现这样的目标

var filteredCarModelsDB = carModelsDB
    .Where(modelDB => carModels.Any(v => v.ModelNumber == modelDB.ModelNumber && v.ModelYear == modelDB.ModelYear));

但是英孚抱怨

LINQ 表达式 '编辑评论' 无法翻译。以可以翻译的形式重写查询,或者通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用来显式切换到客户端评估。

LINQ专家可以指教吗?

P.S 我正在努力避免循环

c# entity-framework linq-to-sql
1个回答
0
投票

是的,默认情况下 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);
© www.soinside.com 2019 - 2024. All rights reserved.