我有一个“所有者”的列表。我需要检查当前用户是否是所有者。 所以我试过:(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”具有相同的价值!
答案 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>
类提供高性能的集合操作。集合是一个不包含重复元素的集合,其元素没有特定的顺序。