如何获取枚举键列表
How to get Enum Key list
假设我有一个 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}
但它 returns 是一个空列表。
你可以试试这个:
List<int> result = Enum.GetValues(typeof(PartyRoleTypeEnum))
.Cast<int>()
.ToList();
Enum
的方法 GetValues
具有以下签名:
public static Array GetValues(Type enumType)
很明显,这个方法 returns 是一个 Array
对象,它包含 enumType 中常量的值,有关进一步的文档,请查看 here。
所以你想要的是将这个数组转换成列表,以便将它赋值给result
。这可以使用 IEnumerable's
Cast
方法然后在其中调用 IEnumerable's
ToList
方法来完成。请注意,没有任何名为 CastTo
.
的方法
更新
我尝试修改你的代码并且它有效(编译后):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);
}
//--------
List<int> myList = new List<int>();
Array myArray = Enum.GetValues(typeof(PartyRoleTypeEnum));
foreach (var item in myArray)
myList.Add((int)item);
尝试:
List<int> result = Enum.GetValues(typeof(PartyRoleTypeEnum)).
.OfType<PartyRoleTypeEnum>().Select(x=> (int)x)
.ToList();
假设我有一个 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}
但它 returns 是一个空列表。
你可以试试这个:
List<int> result = Enum.GetValues(typeof(PartyRoleTypeEnum))
.Cast<int>()
.ToList();
Enum
的方法 GetValues
具有以下签名:
public static Array GetValues(Type enumType)
很明显,这个方法 returns 是一个 Array
对象,它包含 enumType 中常量的值,有关进一步的文档,请查看 here。
所以你想要的是将这个数组转换成列表,以便将它赋值给result
。这可以使用 IEnumerable's
Cast
方法然后在其中调用 IEnumerable's
ToList
方法来完成。请注意,没有任何名为 CastTo
.
更新
我尝试修改你的代码并且它有效(编译后):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);
}
//--------
List<int> myList = new List<int>();
Array myArray = Enum.GetValues(typeof(PartyRoleTypeEnum));
foreach (var item in myArray)
myList.Add((int)item);
尝试:
List<int> result = Enum.GetValues(typeof(PartyRoleTypeEnum)).
.OfType<PartyRoleTypeEnum>().Select(x=> (int)x)
.ToList();