2014-03-06 82 views
2

我想在混合AND和OR謂詞時爲breeze.js配置正確的語法。我沒有在微風網站上看到一個例子,在其他任何地方都找不到。breeze.js混合AND和OR謂詞

基本上我想要做這樣的事情在我的WHERE子句:

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

OR 

(
exemptStatus == 1 
) 

這將帶回符合3個標準或免徵該實體。我使用帶有ODATA語法的EF6。

感謝

+0

你嘗試過什麼?您可以輕鬆地創建兩個複合謂詞並將它們組合在一起。這部分的文檔描述了它 - http://www.breezejs.com/sites/all/apidocs/classes/Predicate.html#method_create –

回答

7

試試這個:

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); 

var compositePred = Predicate.and(pred1, pred2, pred3).or(pred4); 
+0

我不知道爲什麼我的初始版本沒有將AND組合在一起,但是你的例子很好。謝謝。 – mwill

+1

你好想法刀片。你們是否想過一種更好的方式來添加謂詞?這是冗長而痛苦的。你可以在一個語句中用c#linq來做到這一點。 – Justin