1

次の列挙型があります。

public enum UserRole {
  Admin = 1,
  Leader = 2,
  Editor = 3,
  Guest = 4
} // UserRole

そして、次のリスト:

IList<UserRole> roles = new List<UserRole> { UserRole.Leader, UserRole.Editor };

2 つの新しいリストを作成したいと思います。

1 - ロールで最も低いインデックス項目を選択するリスト。たとえば、UserRole.Leader = 2 と、それよりも上位のすべての UserRoles。だから私は得るだろう:

UserRole.Leader, UserRole.Editor, UserRole.Guest

2 - ロール内の最高のインデックス項目を選択するリスト。たとえば、UserRole.Editor = 3 と、それより下位のすべての UserRoles。だから私は得るだろう:

UserRole.Admin, UserRole.Leader, UserRole.Editor

これどうやってするの?

ありがとう、ミゲル

4

2 に答える 2

3

どうですか

public enum UserRole
{
    Admin = 1,
    Leader = 2,
    Editor = 3,
    Guest = 4
}

IList<UserRole> roles = new List<UserRole> { UserRole.Leader, UserRole.Editor };

var min = roles.Min();

var max = roles.Max();

var result1 = Enum.GetValues(typeof(UserRole)).Cast<UserRole>()
                  .Where(x => x >= min);

var result = Enum.GetValues(typeof(UserRole)).Cast<UserRole>()
                 .Where(x => x <= max);
于 2012-11-10T01:50:22.553 に答える
2

を使用して列挙型を列挙できるEnum.GetValues(typeof(UserRole)));ため、答えは次のようになります。

IList<UserRole> GetHigherRoles(UserRole role)
{
    var roles = new List<UserRole>();
    foreach (var r in Enum.GetValues(typeof(UserRole)))
    {
        if ((UserRole)r >= role)
        {
            roles.Add((UserRole)r);
        }
    }
    return roles;
}

IList<UserRole> GetLowerRoles(UserRole role)
{
    var roles = new List<UserRole>();
    foreach (var r in Enum.GetValues(typeof(UserRole)))
    {
        if ((UserRole)r <= role)
        {
            roles.Add((UserRole)r);
        }
    }
    return roles;
}
于 2012-11-10T01:46:40.473 に答える