我有一个场景,需要使用 LINQ 构建 SQL 查询,其中包含可变数量的 OR 子句。我正在编写一个函数,它将根据某些输入构建查询。函数定义看起来类似于...
function BuildQuery(ICollection<ColumnsThatNeedToBeTrue> columns)
{
...
}
因此,我得到了一组需要检查其是否正确的列,并且检查需要使用OR
条款。
If the columns
数组包含A
and B
,我需要查询来检查列A
为真 OR 列B
是真的。
If the columns
数组包含A
, B
and C
,我需要查询并检查是否A
OR B
OR C
是真的。
我不知道如何在一次内完成这一切Where
,因为我不知道如何逐步增加额外的||
条款。我不确定如何根据输入数组在下面包含额外的 OR 检查。
var query = entities.Where(m => m.A == true || m.B == true ...)
我无法连锁Where
函数,每个函数都有自己的列检查,因为它使用AND
条款和我需要OR
.
有没有办法使用 LINQ 构建这样的查询?
您可以使用谓词生成器链接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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)