如何针对Enum检查字符串数组并返回找到的最高值?

时间:2012-10-15 04:00:47

标签: c#

我有以下代码,其中变量userRoles是一个字符串数组,可以包含或者全部包含“Super”,“Admin”,“User”或“Guest”。

    public static RoleType GetMaxRole()
    {
        var userRoles = Roles.GetRolesForUser();
        // var maxRole = userRoles.Max();
        if userRoles.Contains("Super")
            return RoleType.Super;
        if userRoles.Contains("Admin")
            return RoleType.Admin;
        if userRoles.Contains("User")
            return RoleType.User;
        if userRoles.Contains("Guest")
            return RoleType.Guest;
        return RoleType.Default;
    }

这是我正在使用的枚举:

public enum RoleType
{
    Default = 10,
    Guest = 20,
    User = 30,
    Admin = 40,
    Super = 50
}

有没有一种方法可以在没有多个if语句的情况下实现相同的目标。有些方法我可以根据Enum检查userRoles数组吗?

1 个答案:

答案 0 :(得分:2)

public static RoleType GetMaxRole()
{
    var userRoles = Roles.GetRolesForUser();
    var maxRole = userRoles.Max(x => (RoleType)Enum.Parse(typeof(RoleType), x));
    return maxRole;
}