breeze.js混合AND和OR谓词

breeze.js混合AND和OR谓词,breeze,mixing,predicates,Breeze,Mixing,Predicates,我试图在混合AND或谓词时为breeze.js配置正确的语法。我在breeze网站上没有看到一个例子,在其他地方也找不到 基本上,我想在WHERE子句中这样做: ( age > 30 AND sex == 'M' AND jobStartDate >= '1/1/2000' ) OR ( exemptStatus == 1 ) 这将带回符合3个标准或豁免的实体。我正在使用EF6和ODATA语法 谢谢试试这个: var Predicate = breeze.Predic

我试图在混合AND或谓词时为breeze.js配置正确的语法。我在breeze网站上没有看到一个例子,在其他地方也找不到

基本上,我想在WHERE子句中这样做:

(
age > 30  AND
sex == 'M' AND
jobStartDate >= '1/1/2000'
)

OR

(
exemptStatus == 1
)
这将带回符合3个标准或豁免的实体。我正在使用EF6和ODATA语法

谢谢

试试这个:

    var Predicate = breeze.Predicate;
    var baseQuery = EntityQuery.from("Something");
    var pred1 = new Predicate("age", ">", 30);
    var pred2 = new Predicate("sex", "==", 'M');
    var pred3 = new Predicate("jobStartDate", ">=", new Date(2000,1,1));
    var pred4 = new Predicate("exemptStatus", "==", 1);
    var compositePred = pred1.and(pred2).and(pred3).or(pred4);
    var query = baseQuery.where(compositePredicate);
    myEntityManager.executeQuery(query);


你试过什么?您可以轻松地创建两个复合谓词并将它们组合起来。文档的这一部分描述了这一点——我不知道为什么我的初始版本没有正确地将AND分组在一起,但是您的示例非常有效。谢谢,你好。你们有没有想出更好的方法来添加谓词?这是冗长而痛苦的。你可以用c#linq在一个语句中实现这一点。
    var compositePred = Predicate.and(pred1, pred2, pred3).or(pred4);