gpt4 book ai didi

c# - RavenDB - 使用 OR 过滤器构建动态查询

转载 作者:行者123 更新时间:2023-11-30 14:15:35 24 4
gpt4 key购买 nike

我需要能够在运行时构建一个使用 OR 语句的查询。如果我使用下面的方法来构建查询,那么所有内容都是 AND 在一起的。我真的需要每个过滤器值都是 OR 才能使此查询正常工作。

public class IdAndRole
{
public string Id {get;set;}
public string Role {get;set;}
}

var idAndRoles = session.Query<IdAndRole, Roles_ById>();
foreach(var filter in filterValues)
{
idAndRoles = idAndRoles.Where(x => x.In(filter.Id) && x.In(filter.Role));
}

伪代码:

(filter[0].Id == value1 && filter[0].Role == role1) ||(filter[1].Id == value2 && filter[1].Role == role2)

最佳答案

您应该能够使用 PredicateBuilder构建查询。

var predicate = PredicateBuilder.False<IdAndRole>();
foreach (var filter in filterValues)
{
predicate = predicate.Or( x => x.In(filter.Id) && x.In(filter.Role) );
}

var idAndRoles = session.Query<IdAndRole,Roles_byId>()
.Where( predicate );

关于c# - RavenDB - 使用 OR 过滤器构建动态查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777792/

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