odataV4过滤器包含区分大小写和敏感

时间:2017-09-13 19:02:35

标签: c# .net odata

我试图在oData中过滤包含区分大小写的包含。但它不起作用。请找到查询字符串

sr = bs.SearchResult()

它返回大小写。有可能实现吗?

1 个答案:

答案 0 :(得分:0)

如果基础数据库引擎使用大小写不区分大小写排序规则,则默认情况下,即使我们尝试使用函数来操纵字段或大小写的大小写,针对该引擎的所有查询也将忽略大小写。参数值。

因此,即使OData解析器正确地将您的请求转换为类似于以下内容的a语句:

SELECT * FROM Employees WHERE LOWER(FirstName) LIKE '%C%'
SELECT * FROM Employees WHERE UPPER(FirstName) LIKE '%C%'

CI 排序规则中,两个语句都将返回具有“ C”或“ c”的记录。 不存在OOTB支持将OData查询的比较字段强制转换为区分大小写排序规则

.Net中的OData查询引擎通常在基于约定的URL查询之间转换为Linq-to-Entity表示形式,如果您将EF用作SQL Server的ORM,则这些实体查询将解析为SQL语句。 / p>


我看过其他一些类似的文章,建议您可以在EnableCaseInsensitive=false上设置ODataUriResolver,但这只会影响控制器,实体和属性名称的解析,不会影响字符串值的评估比较。