验证List中是否存在字符串

时间:2013-07-24 14:22:45

标签: c# asp.net .net

我有一个“所有者”的列表。我需要检查当前用户是否是所有者。 所以我试过:(list.Contains(string)):

    string Owner = user.Name.ToString();
    if (lstOwners.Contains(Owner))
    {
        btnManager.Visible = true;
    } //does not work.

它不起作用!!

但是当我这样做时它会起作用:

    if (lstOwners.Contains("BRJesusCA2"))
    {
        btnManager.Visible = true;
    }
你可以告诉我为什么?

所有者和“BRJesusCA2”具有相同的价值!

1 个答案:

答案 0 :(得分:4)

C#区分大小写

bool contains = lstOwners.Contains(Owner, StringComparer.OrdinalIgnoreCase);
btnManager.Visible = contains;

因为您已经要求提供更高效的集合。有90个项目是mirco-optimization。但是,您可以将其替换为HashSet<string>

HashSet<string> owners = new HashSet<string>(lstOwners, StringComparer.OrdinalIgnoreCase);
bool isOwner = owners.Contains(Owner);

HashSet<T>类提供高性能的集合操作。集合是一个不包含重复元素的集合,其元素没有特定的顺序。