1

我有以下枚举:

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

以及以下列表:

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

我想创建两个新列表:

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 回答