我有以下标志枚举:
[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/