【发布时间】:2022-01-06 22:08:27
【问题描述】:
我正在使用 Entity Framework Core 构建一个中型查询,并且在我的代码的一部分中,我正在循环一个对象列表。
在此列表中,如果满足特定条件,我想创建一个 WHERE 查询(这很好并且可以工作)。但是,一旦 IQueryable 被迭代,这个循环就会创建一个 WHERE AND 查询。我希望这个循环创建一个 WHERE OR?这可能吗?
带有 where 查询 (queryable = IQueryable) 的循环示例。所以在这个循环中,我试图实现许多 WHERE OR,而不是 WHERE AND。希望这是有道理的。
foreach (var rfs in newsItemQuery.MyData.Where(x => x.Selected))
{
if (rfs.IncludeNegative == false && rfs.IncludeNeutral == false)
{
queryable = queryable.Where(x => x.Id == rfs.Id && x.IsNegative == false && x.IsNeutral == false);
}
else if (rfs.IncludeNegative == false && rfs.IncludeNeutral)
{
queryable = queryable.Where(x => x.Id == rfs.Id && x.IsNegative == false);
}
else if (rfs.IncludeNegative && rfs.IncludeNeutral == false)
{
queryable = queryable.Where(x => x.Id == rfs.Id && x.IsNeutral == false);
}
else
{
queryable = queryable.Where(x => x.Id == rfs.Id);
}
}
【问题讨论】:
-
使用PredicateBuilder 来自LINQKi。如果您不想依赖,只需将其代码提取到您的项目中即可。
-
谢谢。我已经找到并实施了它。很棒的包:)
标签: entity-framework entity-framework-core