gpt4 book ai didi

c# - 如何使用 LINQ 链接 OR 子句?

转载 作者:太空狗 更新时间:2023-10-30 00:49:47 26 4
gpt4 key购买 nike

我有一个场景,我需要使用 LINQ 构建一个 SQL 查询,其中包括可变数量的 OR 子句。我正在编写一个函数,它将根据一些输入构建查询。函数定义看起来类似于...

function BuildQuery(ICollection<ColumnsThatNeedToBeTrue> columns)
{
...
}

所以,我得到了一组列,我需要检查它们是否为真,并且检查需要使用 OR 子句。

如果 columns 数组包含 AB,我需要查询来检查 A 列> 为真或列 B 为真。

如果columns数组包含ABC,我需要查询和检查如果 ABC 为真。

我不知道如何在单个 Where 中完成所有这些,因为我不知道有什么方法可以逐步添加额外的 || 子句。我不确定如何根据输入数组在下面包含额外的 OR 检查。

var query = entities.Where(m => m.A == true || m.B == true ...)

我无法链接 Where 函数,每个函数都用于自己的列检查,因为它使用 AND 子句构建查询,而我需要 OR

有没有办法使用 LINQ 构建这样的查询?

最佳答案

您可以使用 PredicateBuilder链接条件。

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

关于c# - 如何使用 LINQ 链接 OR 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36186123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com