比较到轻而易举的操作员
本文关键字:操作员 轻而易举 比较 | 更新日期: 2023-09-27 18:31:39
我正在尝试使用 Breeze 执行以下 LINQ 查询的道德等效项:
db.Customers.Where(c => c.Key.CompareTo("ALFKI") > 0)
(含义 - 返回其键(字符串值)"大于"ALFKI 的所有客户。
我似乎在 breeze 中找不到 CompareTo 运算符.js的 FilterQueryOp 枚举。
做类似的事情
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 查询的客户端运算符,是否可以在服务器上截获并注入适当的谓词?
事实证明,
使用 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 运算符会很棒;-)