OR 구문을 사용하는 런타임에 쿼리를 작성할 수 있어야합니다. 아래의 방법을 사용하여 쿼리를 작성하면 모든 것이 AND입니다. 이 쿼리가 제대로 작동하려면 각 필터 값을 OR로 설정해야합니다.RavenDB - 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)
이것은 RavenDB Linq 공급자에만 해당됩니다. Predicate Builder는 RavenDB에 존재하지 않습니다. – Phil
@Phil - 아니요,하지만 소스를 얻을 수 있습니다. 그것은 잘 작동해야하는 Expression을 만듭니다. 비슷한 기술을 사용하여 RavenDB 프로젝트 중 하나에서 표현식을 구축하고 있습니다. – tvanfosson