我正在尝试使用Breeze进行以下LINQ查询的道德等效:
db.Customers.Where(c => c.Key.CompareTo("ALFKI") > 0)
(意思是 - 返回Key(字符串值)“大于”ALFKI的所有客户。
我似乎无法在breeze.js的FilterQueryOp枚举中找到CompareTo运算符。
做类似
的事情EntityQuery.from("Customers").where("Key", ">", "ALFKI")
以EF熟悉的
失败The binary operator GreaterThan is not defined for the types 'System.String' and 'System.String'.
有没有办法用微风做这种事情?如果没有,它是否是底层OData协议的限制,或者这是一个可以添加到Breeze的运算符?如果没有客户端操作符可以生成相应的LINQ查询,我可以在服务器上拦截并注入相应的谓词吗?
答案 0 :(得分:0)
事实证明使用withParameters实现变通方法非常简单 - 就像这样:
var key = "ALFKI";
EntityQuery.from("Customers).withParameters({ Key: key })
...并像这样编写控制器动作:
[HttpGet]
public IQueryable<WebSession> WebSessions(string key)
{
return _repository.Customers.Where(c => c.Key.CompareTo(key) > 0);
}
在微风中拥有这种灵活性是很好的。尽管如此,在某些时候获得剩余的LINQ运算符真是太棒了! - )