我试图在oData中过滤包含区分大小写的包含。但它不起作用。请找到查询字符串
sr = bs.SearchResult()
它返回大小写。有可能实现吗?
答案 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
,但这只会影响控制器,实体和属性名称的解析,不会影响字符串值的评估比较。