考虑我有一个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}
但它返回一个空列表。
答案 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
的方法。
<强>更新强>