c# - 检查 Flags Enum 是否包含所有字符串

标签 c# enums bitflags

我有以下标志枚举:

[Flags]
public enum RoleModels {
  Master = 1 << 0,
  Editor = 1 << 1,
  Member = 1 << 2
}

我有一个 RoleModels 变量和一个字符串列表:

var roles1 = RoleModels.Master | RoleModels.Member;

List<String> rolesStrings = new List<String> { "mAster", "Member" }

我想检查是否所有 rolesStrings 都在角色中。

检查应该不区分大小写......在这种情况下它会是真实的。

我试图将字符串转换为一个枚举:

var roles2 = (RoleModels)rolesStrings.Aggregate((a, b) => a | b);

然后以某种方式检查是否所有角色 2 都在角色 1 中。

但我没能完成这项工作......

有人可以帮帮我吗?

谢谢你, 米格尔

最佳答案

你可以这样做:

var roles1 = RoleModels.Master | RoleModels.Member;
List<String> rolesStrings = new List<String> { "mAster", "Member" }

bool hasFlag = true;
foreach (var role in rolesStrings)
{
    RoleModels enumValue;

    if (!(Enum.TryParse(role,true, out enumValue) && roles1.HasFlag(enumValue)))
    {
        hasFlag = false;
        break;
    }
}

这是 fiddle

关于c# - 检查 Flags Enum 是否包含所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23345738/

相关文章:

swift - 检查是否可以从开关中的参数创建枚举

enums - 使用 @XmlEnumValue 映射 JAX-RS 枚举

ruby-on-rails - 具有枚举和关联的工厂女孩

c# - 如何从 ORed 标志中检索返回值

c# - 在CompareValidator上添加JS验证

c# - Android 的 - performHapticFeedback 与 Vibrator - 文档和使用

c# - ASP MVC.NET - 如何绑定(bind) KeyValuePair?

c# - 除以零错误,我该如何解决这个问题?

delphi - Delphi设置位标志

database-design - 在每个数据库引擎中存储二进制标志/ bool 值的最佳方法是什么?