2014-06-25 66 views
0

我的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 $过滤= substringof( '黑',ColorFlagInfo)

http://odata.test.com/cars?$ filter = ColorFlagInfo%20eq%20'Black'

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

+0

你能分享的ColorFlagInfo属性和包含类型的EDM模型? $ filter = substringof('Green',ColorFlagInfo)不工作吗? –

回答

1

在OData V3中,我们没有Enum类型。 OData V4的确如此。

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

对于的WebAPI的OData:

  • 在V3中, 'substringof' 功能不能被应用到枚举类型。 您需要添加所有可能的条件

    $过滤= ColorFlagInfo EQ '绿色' 或ColorFlagInfo EQ '红,绿' 或....

  • 在V4中,您可以枚举使用has运营商类型。

    $过滤= ColorFlagInfo已经Namespace.ColorFlagInfoTypeName'Green”

+0

现在如何通过枚举的int值进行搜索?我不想按名称空间搜索,我想按值搜索。 –

+0

@JamesHancock,这可以做到,看看我的答案在这里:http://stackoverflow.com/questions/25490430/odata-v4-webapi-filter-by-int-value-of-enum/34874182#34874182 –