是否可以在SQL Server数据库中使用Linq .IndexOf()? - .Contains()的替代方案

时间:2018-01-16 17:47:48

标签: c# sql-server linq

有没有人知道如何使用/如果可能

.IndexOf()

在SQL Server中而不是

.Contains()

目前我得到NotSupportedException

  

将String.IndexOf转换为SQL不支持具有StringComparison参数的版本

我希望有比.Contains(ToLower(string))更好的表现。

这就是我的尝试:

.Where(b => b.item.IndexOf(boSearchTerm, StringComparison.CurrentCultureIgnoreCase)!= -1)

3 个答案:

答案 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