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

我如何使这行不区分大小写?

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框架(4&+)中检查相等性的最佳实践

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

改为使用以下内容

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

MSDN建议:

  • 使用String.Equals方法的重载来测试两个字符串是否相等。
  • 使用String.CompareString.CompareTo方法对字符串进行排序, 而不是检查是否相等

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

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

    请使用这个比较:

    string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
    
    链接地址: http://www.djcxy.com/p/75227.html

    上一篇: How can I do a case insensitive string comparison?

    下一篇: Using IQueryable with Linq