2012-10-15 2 views
0

변수 userRoles가 "Super", "Admin", "User"또는 "Guest"를 포함 할 수있는 문자열 배열 인 다음 코드가 있습니다.Enum에 대해 문자열 배열을 검사하고 발견 된 가장 높은 값을 반환하려면 어떻게해야합니까?

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

내가 if 문 여러 않고 동일한을 달성 할 수있는 방법이 있나요 : 여기

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; 
    } 

은 내가 사용하고 열거입니다. Enum에 대해 userRoles 배열을 검사 할 수있는 방법은 무엇입니까?

+0

확인이 게시물 : http://stackoverflow.com/questions/105372/how-to-enumerate-an-enum –

+0

당신의 GetMaxRole은 언제나 많은 역할이있는 경우에도, 하나 roleType에를 반환하는 것입니다? – gideon

답변

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

방금 ​​생각한 바가 있습니다. – gideon

+0

당신은 직접'return userRoles.Max (x => (RoleType) Enum.Parse (typeof (RoleType), x))' –

관련 문제