I have the following flags Enum:
[Flags]
public enum RoleModels {
Master = 1 << 0,
Editor = 1 << 1,
Member = 1 << 2
}
And I have a RoleModels variable and a list of strings:
var roles1 = RoleModels.Master | RoleModels.Member;
List<String> rolesStrings = new List<String> { "mAster", "Member" }
I would like to check if all rolesStrings are in roles.
The check should be case insensitive ... In this case it will be true.
I was trying to convert the strings to one enum:
var roles2 = (RoleModels)rolesStrings.Aggregate((a, b) => a | b);
And then check, somehow, if all roles2 are in roles1.
But I wasn't able to make this work ...
Could someone, please, help me out?
Thank You, Miguel
You can do it like this:
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;
}
}
Here is the fiddle