我有一个场景,我需要使用LINQ构建一个SQL查询,其中包含可变数量的OR子句.我正在编写一个函数,它将根据一些输入构建查询.函数定义看起来类似于......
function BuildQuery(ICollection<ColumnsThatNeedToBeTrue> columns)
{
...
}
Run Code Online (Sandbox Code Playgroud)
所以,我给了一个我需要检查的列的集合,并且检查需要使用OR子句.
如果columns数组包含A和B,我需要查询来检查列A是否为真或列为B真.
如果columns数组包含A,B并且C,我需要查询并检查AOR BOR C是否为真.
我不知道如何在一个单一内完成这一切Where,因为我不知道如何逐步增加其他||条款.基于输入数组,我不确定如何在下面包含额外的OR检查.
var query = entities.Where(m => m.A == true || m.B == true ...)
Run Code Online (Sandbox Code Playgroud)
我不能链接Where函数,每个函数用于自己的列检查,因为它使用AND子句构建该查询,我需要OR.
有没有办法使用LINQ构建这样的查询?
您可以使用PredicateBuilder链接or条件.
var predicate = PredicateBuilder.False<SomeEntity>();
predicate = predicate.Or (p => p.A == true);
if(something)
predicate = predicate.Or (p => p.B == true);
var query = entities.AsExpandable().Where (predicate); //AsExpandable() for EF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |