比较到轻而易举的操作员

本文关键字:操作员 轻而易举 比较 | 更新日期: 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 运算符会很棒;-)