有没有人知道如何使用/如果可能
.IndexOf()
在SQL Server中而不是
.Contains()
目前我得到NotSupportedException
:
将String.IndexOf转换为SQL不支持具有StringComparison参数的版本
我希望有比.Contains(ToLower(string))
更好的表现。
这就是我的尝试:
.Where(b => b.item.IndexOf(boSearchTerm, StringComparison.CurrentCultureIgnoreCase)!= -1)
答案 0 :(得分:3)
StringComparison
的概念无法转换为SQL,因为数据库使用更具体的collations概念。要进行不区分大小写的比较,请在存储(实例,数据库或列定义)中使用不区分大小写的排序规则或在比较中强制使用特定排序规则,请参阅Casting Collation of an Expression。要使用的整理完全针对所使用数据的国家类型。
此外,在C#和任何其他选择的语言中使用ToLower()
是不正确的。它将not pass Turkish I test。
答案 1 :(得分:0)
将列的排序规则设置为CI(不区分大小写),并且包含不区分大小写... - Wouter Huysentruit 1分钟前
答案 2 :(得分:0)
在SQL查询中忽略大小写的最简单方法是将列的排序规则设置为CI(不区分大小写),那样Contains
或任何其他字符串比较都不区分大小写。
如果要改进此查找,还可以在列上添加FULLTEXT INDEX。