c# - 如何进行不区分大小写的字符串比较?

标签 c# string-comparison case-insensitive

如何让下面的行不区分大小写?

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

今天早些时候我得到了一些建议,建议我使用:

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

问题是我无法让它工作,我试过下面的行,它编译但返回错误的结果,它返回已注册的用户作为未注册的用户和未注册的用户作为已注册的用户。

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

谁能指出问题所在?

最佳答案

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

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

改用下面的

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

MSDN recommends:

  • Use an overload of the String.Equals method to test whether two strings are equal.
  • Use the String.Compare and String.CompareTo methods to sort strings, not to check for equality.

关于c# - 如何进行不区分大小写的字符串比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121957/

相关文章:

c# - 关于 asp.net 中最大池大小的问题

c# - 默认情况下,== 运算符如何用于字符串?

php - MySQL DATETIME 格式比较 - 是否需要 strtotime?

python - 让 BeautifulSoup 以不区分大小写的方式捕获标签

sql - 不区分大小写的搜索/查询

c# - 无法开始调试。无法启动启动项目。 VS2015

c# - 有没有办法在递归调用之前检查可用的堆栈大小? (C#)

c# - 使用 ComVisible 导出到 COM 时是否可以隐藏类父级?

c# - 如何字符串操作和解析 url

ios - 如何在 iOS 中读取、写入和检查不区分大小写的文件名?