如何在Odata中应用字符串查询过滤器

时间:2014-06-25 17:19:09

标签: odata

我的Odata集合返回一个包含以下字段的集合:

<d:ColorFlagInfo>Red,Blue</d:ColorFlagInfo>

<d:ColorFlagInfo>Red,Green</d:ColorFlagInfo>


<d:ColorFlagInfo>Black,Brown</d:ColorFlagInfo>

有人可以帮我构建一个按一种或多种特定颜色过滤的Odata查询:

我尝试了以下方法来获得特定的颜色:

http://odata.test.com/cars?$ filter = substringof('Black',ColorFlagInfo)

http://odata.test.com/cars?$ filter = ColorFlagInfo%20eq%20&#39; Black&#39;

我如何找到包含绿色的所有ColarFlagInfo?

1 个答案:

答案 0 :(得分:1)

在OData V3中,我们没有Enum类型。 OData V4可以。

您的服务实施了什么? WebAPI OData或WCF DS。

对于WebAPI OData:

  • 在V3中,&#39; substringof&#39;函数不能应用于枚举类型。 您需要附加所有可能的条件

    $ filter = ColorFlagInfo eq&#39; Green&#39;或ColorFlagInfo eq&#39; Red,Green&#39;或....

  • 在V4中,您可以在枚举类型上使用has运算符。

    $ filter = ColorFlagInfo有Namespace.ColorFlagInfoTypeName&#39;绿色&#39;