BreezeJS - Where子句中的正则表达式

时间:2013-09-12 07:34:44

标签: breeze

我正在尝试做类似的事情:

var predicate = breeze.Predicate.create('columnName', breeze.FilterQueryOp.Contains, 'regexHere');
manager.executeQuery(entityQuery.From('tableName').where(predicate));

当我尝试以“正常”方式搜索它时,一切正常,但我想包括可用作sql LIKE运算符的正则表达式搜索。大多数情况下,我对如何制作类似于sqls的条款感兴趣:

WHERE columnName LIKE '%abc%def%'

Breeze有可能吗?

1 个答案:

答案 0 :(得分:3)

很抱歉,[FilterQueryOp.Contains],FilterQueryOp.StartsWith和FilterQueryOp.EndsWith是您想要的最接近的查询运算符。用于构造查询URL的OData规范不支持基于正则表达式的查询。

也就是说,您可以使用 EntityQuery.withParameters 对从客户端传递的任何参数执行任何操作。例如

// Client side
var query = EntityQuery.from("CustomersByRegex")
        .withParameters({ regex: myRegex });

// Server side
[HttpGet]
public IQueryable<Customer> CustomersByRegex(string regex) {
   // use the regex here against your customers collection
   // and return the resulting customers;
}

您也可以混合使用这两种机制。即使用过滤器和'withParamters'调用的常规微风查询。