我如何做一个不区分大小写的string比较?

我怎样才能使行不区分大小写?

drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username == (string)drUser["Username"]) != -1); 

今天早些时候给了我一些build议,build议我使用:

 x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase))); 

麻烦的是我不能得到这个工作,我已经尝试下面的行,这个编译但返回错误的结果,它返回登记的用户作为未注册和未注册的用户作为登记。

 drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase))); 

任何人都可以指出这个问题吗?

这不是在.NET框架(4&+)中检查相等性的最佳实践

 String.Compare(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0 

改用以下代码

 String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) 

MSDNbuild议:

  • 使用String.Equals方法的重载来testing两个string是否相等。
  • 使用String.CompareString.CompareTo方法对string进行sorting, 而不是检查相等性

你应该使用如下的静态String.Compare函数

 x => String.Compare (x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0 

请使用这个比较:

 string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase); 

我想你会在这个链接中find更多的信息:

http://codeidol.com/community/dotnet/controlling-case-sensitivity-when-comparing-two-st/8873/

使用String类的Compare静态方法比较两个string。 比较是否区分大小写取决于其重载的第三个参数。 例如:

 string lowerCase = "abc"; string upperCase = "AbC"; int caseInsensitiveResult = string.Compare(lowerCase, upperCase, StringComparison.CurrentCultureIgnoreCase); int caseSensitiveResult = string.Compare(lowerCase, StringComparison.CurrentCulture); 

caseSensitiveResult值是-1(表示lowerCase是“小于”upperCase),而caseInsensitiveResult是零(表示lowerCase“等于”upperCase)。

如何使用StringComparison.CurrentCultureIgnoreCase来代替?

您可以(虽然controverse)扩展System.String以提供不区分大小写的比较: public static bool CIEquals(this String a, String b) { return a.Equals(b, StringComparison.CurrentCultureIgnoreCase); } public static bool CIEquals(this String a, String b) { return a.Equals(b, StringComparison.CurrentCultureIgnoreCase); }并使用这样的:

x.Username.CIEquals((string)drUser["Username"]);

C#允许你创build数十万的扩展方法,可以在你的项目中作为语法build议,我相当有用。

它不是答案,我知道这个问题是古老和解决,我只是想添加这些位。

您可以随时使用函数:.ToLower(); .ToUpper();

转换你的string,然后比较它们…

祝你好运