将指定的项目从枚举转换为列表?

时间:2015-11-26 07:59:21

标签: c# enums

我的枚举列表中有以下项目

public enum Role
    {
        ED=1,
        CPDHEAD=2,
        CPD=3,
        CENTERMANAGER=4,
        ACCOUNTSHEAD=5,
        MANAGER=6,
        TECHNICALHEAD=7,
        SALESINDIVIDUAL=8,
        ACCOUNTS=9,
        TECHNICALINDIVIDUAL=10
    }

如何将TechnicalHeadTechnicalIndividual值转换为List<int>

这是我尝试过但它返回枚举角色的所有值

 List<int> _empRolelId = Enum.GetValues(typeof(EnumClass.Role))
                                .Cast<int>()                                    
                                .Select(x => Convert.ToInt32(x))
                                .ToList();

2 个答案:

答案 0 :(得分:7)

您的枚举基础类型为int,因此其项目可以明确地转换为int

var _empRolelId = new List<int>();
_empRolelId.Add((int)Role.TECHNICALHEAD);
_empRolelId.Add((int)Role.TECHNICALINDIVIDUAL);

或在初始化时构建列表:

var _empRoleId = new List<int>
{
    (int)Role.TECHNICALHEAD,
    (int)Role.TECHNICALINDIVIDUAL
};

答案 1 :(得分:4)

您可以使用where子句进行过滤。此外,选择是多余的,因为您之前转换为int。

List<int> _empRolelId = Enum.GetValues(typeof(EnumClass.Role))
                            .Cast<int>()
                            .Where(x => x ==  (int)Rextester.Role.TECHNICALHEAD || x == (int)Rextester.Role.TECHNICALINDIVIDUAL)
                            .ToList();

Demo