如何获得Enum Key列表

时间:2015-02-01 08:01:29

标签: c# enums

考虑我有一个enum类型:

public enum PartyRoleTypeEnum
{
    Stdudent =20,
    Teacher =21,
    Manager =22
}

我试图通过

获取PartyRoleTypeEnum
list<int> result = Enum.GetValues(typeOf(PartyRoleTypeEnum)).CastTo<int>();

我期待result成为List<int>{20,21,22}

但它返回一个空列表。

4 个答案:

答案 0 :(得分:1)

我尝试修改你的代码并且它有效(在编译之后):http://csharppad.com/gist/2a87fe395ac2b66fa1d8

public enum PartyRoleTypeEnum
{
    Stdudent =20,
    Teacher =21,
    Manager =22
}

//--------

List<int> result = Enum.GetValues(typeof(PartyRoleTypeEnum)).Cast<int>().ToList();

//--------

Console.WriteLine(result.Count); //Prints 3

//--------
//Prints 20,21,22
foreach(var item in result)
{
    Console.WriteLine(item);
}


//-------- 

答案 1 :(得分:1)

List<int> myList = new List<int>();
Array myArray = Enum.GetValues(typeof(PartyRoleTypeEnum));

foreach (var item in myArray)
    myList.Add((int)item);

答案 2 :(得分:1)

尝试:

List<int> result = Enum.GetValues(typeof(PartyRoleTypeEnum)).
                   .OfType<PartyRoleTypeEnum>().Select(x=> (int)x)
                   .ToList();

答案 3 :(得分:0)

你可以试试这个:

List<int> result = Enum.GetValues(typeof(PartyRoleTypeEnum))
                       .Cast<int>()
                       .ToList();

Enum的方法GetValues具有以下签名:

public static Array GetValues(Type enumType)

很明显,这个mehtod会返回一个Array对象,其中包含enumType中常量的值,有关进一步的文档,请查看here

因此,您希望将此数组转换为列表,以便将其分配给result。这可以使用IEnumerable's Cast方法完成,然后使用IEnumerable's ToList方法调用它。请注意,没有任何名为CastTo的方法。

<强>更新

.NET Fiddle