【问题标题】:How to apply string query filters in Odata如何在 Odata 中应用字符串查询过滤器
【发布时间】:2014-06-26 16:50:13
【问题描述】:

我的 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'Black'

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

【问题讨论】:

  • 你能分享一下关于 ColorFlagInfo 属性和包含类型的 edm 模型吗? $filter=substringof('Green', ColorFlagInfo) 不工作吗?

标签: odata


【解决方案1】:

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

您的服务是用什么实现的? WebAPI OData 或 WCF DS。

对于 WebAPI OData:

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

    $filter=ColorFlagInfo eq 'Green' 或 ColorFlagInfo eq 'Red,Green' 或 ....

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

    $filter=ColorFlagInfo 有 Namespace.ColorFlagInfoTypeName'Green'

【讨论】:

  • 现在如何通过枚举的 int 值进行搜索?我不想按命名空间搜索,我想按值搜索。
  • @JamesHancock,这可以做到,在这里查看我的答案:stackoverflow.com/questions/25490430/…
猜你喜欢
  • 2013-05-12
  • 2023-02-22
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
相关资源
最近更新 更多