c# - 验证字符串是否存在于列表中

标签 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”具有相同的值!

最佳答案

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>类提供高性能的集合操作。集合是不包含重复元素的集合,其元素没有特定的顺序。

关于c# - 验证字符串是否存在于列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836779/

相关文章:

c# - session 状态跨子域共享 session ,VB.NET 网站 C# MVC 4 应用程序

asp.net - 将额外信息与 ASP.NET MVC 成员资格相关联

c# - 在 ASP.Net 中添加具有相同主键数据的数据

c# - WCF 无法从 net.tcp 获取元数据

c# - 如何在 doxygen 类图中只显示类名?

c# - 有人用.NET编写桌面应用程序吗?

c# - DataFormatString 格式百分比错误

c# - IIS 安装在 Windows 10 的 D 分区上

c# - 如何使用 WinForms 的现有组件创建类似 Google 的日历

c# - 来自 C# DLL 的用户定义对象的 VBA 数组