我正在尝试做类似的事情:
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有可能吗?
答案 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'调用的常规微风查询。