OData WebAPI,内存可查询和区分大小写

Posted

技术标签:

【中文标题】OData WebAPI,内存可查询和区分大小写【英文标题】:OData WebAPI, in-memory queryable and case-sensitivity 【发布时间】:2015-08-11 09:18:07 【问题描述】:

我在使用 OData WebAPI 并查询 EnumerableQuery(我在其上调用 .AsQueryable() 的列表)时遇到问题。我有一个实体集,一个带有 Get 方法的控制器,它返回 IQueryable。当我查询实体集并使用此 $filter

$filter=SomeStringProp eq 'SomeValue'

我只得到SomeStringProp 等于'SomeValue' 的字母和大小写的实体。我想以某种方式强制 OData 对所有字符串使用不区分大小写的比较器 - 即使是这样的函数调用

$filter=contains(SomeStringProp, 'apple')

我需要 OData 来返回 SomeStringProp 等于 'APPLE''PineApple''AppleSauce' 的实体

一些附加信息:

数据库与此无关;如前所述,该集合在内存中 在 OData 查询中使用 tolower() 只是一种解决方法,因此不能解决问题

【问题讨论】:

【参考方案1】:

Odata 不支持您提出的问题。

不区分大小写的推荐方法是使用tolower (or toupper)。

contains 关键字已经是 odata v4 的一部分,并在 Web API 中实现。

将它们结合起来,你就完成了:)

编辑:与sample WS 一起工作就好了。

【讨论】:

以上是关于OData WebAPI,内存可查询和区分大小写的主要内容,如果未能解决你的问题,请参考以下文章

武装你的WEBAPI-OData聚合查询

如何获取 OData 可查询 Web API 端点过滤器并从 DTO 对象映射它?

武装你的WEBAPI-OData便捷查询

武装你的WEBAPI-OData便捷查询

将 ODATA $expand 查询选项与 WebAPI 和 ViewModel 一起使用

武装你的WEBAPI-OData资源更新Delta