您如何查询OData枚举集合?

时间:2016-05-11 23:21:47

标签: odata

我一直在寻找关于此的明确答案,但似乎无法在任何地方找到它。我所知道的是,创建OData 4.0枚举类型的集合是合法的。我也知道我们使用的Olingo解析器(4.2)允许我们使用'has'关键字查询Enumeration或Enumeration集合。但是,我找不到任何证明这实际上是合法查询的文档。我也知道使用OLingo和Microsoft解析器,通常用于Collection的任何/所有语法似乎都不起作用。我真的很感激任何帮助解决这个问题。

1 个答案:

答案 0 :(得分:1)

OData版本4规范说明了logical operators:"逻辑运算符不支持集合,实体和复杂类型的操作数。" has是逻辑运算符之一。因此,枚举类型集合不支持has。此外,has被定义为对单个枚举值进行操作,因此不适合查询枚举值的集合。

该规范还指出lambda operators操作"标识集合的导航路径"。如果导航路径表示以导航属性结尾的路径,则any / all只能应用于由导航属性标识的集合。由于枚举类型的集合由结构属性表示,因此any / all不能应用于枚举类型的集合。但这是猜想,因为术语导航路径未在规范中定义。

代替枚举类型的集合,请考虑使用具有IsFlags属性集的枚举类型。您绝对可以使用has运算符查询此类枚举。