Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Linq to Sql中使用.Contains()时,如何使.ToUpper()或等效项工作?_C#_Linq_Linq To Sql_Case Insensitive - Fatal编程技术网

C# 在Linq to Sql中使用.Contains()时,如何使.ToUpper()或等效项工作?

C# 在Linq to Sql中使用.Contains()时,如何使.ToUpper()或等效项工作?,c#,linq,linq-to-sql,case-insensitive,C#,Linq,Linq To Sql,Case Insensitive,此代码: keyword = 's'; IEnumerable<Member> searchResults = (from m in members where m.ScreenName.ToUpper().Contains(keyword.ToUpper()) select m).AsEnumerable(); 这失败了StringComparison.OrdinalingOreCase不是.Contains()的有效参数。S

此代码:

keyword = 's';
IEnumerable<Member> searchResults = 
        (from m in members
         where m.ScreenName.ToUpper().Contains(keyword.ToUpper())
         select m).AsEnumerable();

这失败了
StringComparison.OrdinalingOreCase
不是.Contains()的有效参数。

SQL中的AFAIR字符串比较本身不区分大小写。

SQL中的AFAIR字符串比较本身不区分大小写。

无法(AFAIK)通过Linq到SQL显式指定大小写敏感度/不敏感度

我建议修改您的数据库模式,对正在搜索的列使用不区分大小写的排序规则

SQL Server排序规则设置控制大小写敏感度、重音敏感度(“cafe”是否与“café”相同?)以及用于执行字符串比较和排序的规则

排序规则是从SQL Server内置的列表中选择的,大多数排序规则将被称为SQL\u Latin1\u General\u CP1\u CI\u AI

最后两对字符是重要的位-CI_AI表示不区分大小写,不区分重音。我想你会发现ScreenName列上的排序规则设置为CS_AI或CS_AS。更改此选项,您的查询将正常工作。

没有办法(AFAIK)通过Linq to SQL显式指定区分大小写/不区分大小写

我建议修改您的数据库模式,对正在搜索的列使用不区分大小写的排序规则

SQL Server排序规则设置控制大小写敏感度、重音敏感度(“cafe”是否与“café”相同?)以及用于执行字符串比较和排序的规则

排序规则是从SQL Server内置的列表中选择的,大多数排序规则将被称为SQL\u Latin1\u General\u CP1\u CI\u AI


最后两对字符是重要的位-CI_AI表示不区分大小写,不区分重音。我想你会发现ScreenName列上的排序规则设置为CS_AI或CS_AS。更改此选项,您的查询将正常工作。

可能重复@BlueRaja和@Danny-感谢链接。这不是复制品。该方法用于string.equals。我正在使用.Contains()方法。请参阅编辑。可能重复的@BlueRaja和@Danny-感谢链接。这不是复制品。该方法用于string.equals。我正在使用.Contains()方法。请参见编辑。那么为什么我会得到区分大小写的结果?可能是因为您在数据库中设置了排序规则。我发现这有点令人沮丧。我想知道如何使.ToUpper()正确工作。如果在这种情况下.ToUpper()不是一个选项,那么我正在寻找一个等价的解决方案。我没有在数据库中设置排序规则值。我不知道排序规则是做什么的。如果已经设置了排序规则,那么我可能会一直这样做。那么,有没有一种方法可以不区分大小写地使用
.Contains()
?请查看此页面并查看数据库的排序规则,然后您可能会发现问题所在。问题与
.Contains
无关,实际的查询是在数据库中进行的,而由于排序规则,数据库查询区分大小写。一个测试是:如果您使用SQL Server Management Studio,您在其中运行的查询是否区分大小写?那么为什么我会得到区分大小写的结果?可能是因为您在数据库中设置了排序规则。我发现这有点令人沮丧。我想知道如何使.ToUpper()正确工作。如果在这种情况下.ToUpper()不是一个选项,那么我正在寻找一个等价的解决方案。我没有在数据库中设置排序规则值。我不知道排序规则是做什么的。如果已经设置了排序规则,那么我可能会一直这样做。那么,有没有一种方法可以不区分大小写地使用
.Contains()
?请查看此页面并查看数据库的排序规则,然后您可能会发现问题所在。问题与
.Contains
无关,实际的查询是在数据库中进行的,而由于排序规则,数据库查询区分大小写。一个测试是:如果您使用SQL Server Management Studio,您在其中运行的查询是否区分大小写?谢谢您的解释。解释很有帮助,谢谢你的解释。解释很有帮助。
IEnumerable<Member> searchResults = 
       (from m in members
        where m.ScreenName.Contains(keyword, StringComparison.OrdinalIgnoreCase)
        select m).AsEnumerable();