我一直在寻找关于此的明确答案,但似乎无法在任何地方找到它。我所知道的是,创建OData 4.0枚举类型的集合是合法的。我也知道我们使用的Olingo解析器(4.2)允许我们使用'has'关键字查询Enumeration或Enumeration集合。但是,我找不到任何证明这实际上是合法查询的文档。我也知道使用OLingo和Microsoft解析器,通常用于Collection的任何/所有语法似乎都不起作用。我真的很感激任何帮助解决这个问题。
答案 0 :(得分:1)
OData版本4规范说明了logical operators:"逻辑运算符不支持集合,实体和复杂类型的操作数。" has
是逻辑运算符之一。因此,枚举类型集合不支持has
。此外,has
被定义为对单个枚举值进行操作,因此不适合查询枚举值的集合。
该规范还指出lambda operators操作"标识集合的导航路径"。如果导航路径表示以导航属性结尾的路径,则any
/ all
只能应用于由导航属性标识的集合。由于枚举类型的集合由结构属性表示,因此any
/ all
不能应用于枚举类型的集合。但这是猜想,因为术语导航路径未在规范中定义。
代替枚举类型的集合,请考虑使用具有IsFlags属性集的枚举类型。您绝对可以使用has
运算符查询此类枚举。