如何使用 OData 创建交叉属性比较筛选器。 即类似
/订单?$filter=订单日期 gt 发货日期
所有 OData 示例仅在筛选器表达式的右侧显示文本。
OData 可以做到这一点,还是我错过了什么?
当然你可以做到。 这是来自Netflix的查询,比较了DVD和蓝光标题的可用日期
http://odata.netflix.com/Catalog/Titles?$filter=Dvd/AvailableFrom%20gt%20BluRay/AvailableFrom
但是,当然,这是相关的ABNF,表明左值和右值是可以互换的,两者都可以是memberExpr或boolFunctionCallExpr,甚至是非布尔表达式(例如:小写(Category/Slug)eq小写(substring(ProcuctName,10))。
commonExpr = [ WSP ] (
boolCommonExpr /
methodCallExpr /
parenExpr /
literalExpr /
addExpr /
subExpr /
mulExpr /
divExpr /
modExpr /
negateExpr /
memberExpr /
firstMemberExpr /
castExpr /
functionCallExpr
) [ WSP ]
ltExpr = commonExpr WSP "lt" WSP commonExpr