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 - noしかし、あなたはソースを入手できます。それはちょうどうまく動作するはずのExpressionを構築します。私はRavenDBプロジェクトの1つで式を構築するために同様の手法を使用しています。 – tvanfosson