如何使用 OData 创建跨属性比较过滤器。即类似的东西
/Orders?$filter=OrderDate gt ShippedDate
所有 OData 示例仅在过滤器表达式的右侧显示文字。
OData 可以做到这一点,还是我错过了什么?
如何使用 OData 创建跨属性比较过滤器。即类似的东西
/Orders?$filter=OrderDate gt ShippedDate
所有 OData 示例仅在过滤器表达式的右侧显示文字。
OData 可以做到这一点,还是我错过了什么?
你当然可以这样做。这是来自 Netflix 的查询,比较了 DVD 和蓝光影片的可用日期
http://odata.netflix.com/Catalog/Titles?$filter=Dvd/AvailableFrom%20gt%20BluRay/AvailableFrom
但是当然,这里是相关的ABNF,表明左右值是可以互换的,两者都可以是memberExpr或者boolFunctionCallExpr甚至是非bool表达式(eg: lowercase(Category/Slug) eq lowercase(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