0

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

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%'

微风有可能吗?

4

1 回答 1

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”调用的常规微风查询。

于 2013-09-12T16:56:42.527 回答