2

我有一个“所有者”列表。我需要检查当前用户是否是所有者。所以我尝试了:(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;
    }

你能告诉我为什么吗?

Owner和《BRJesusCA2》价值一样!

4

1 回答 1

4

C# 区分大小写

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

由于您要求收集更有效的集合。有 90 项是微优化的。但是,您可以将其替换为HashSet<string>

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

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

于 2013-07-24T14:26:11.880 回答