获取可用枚举列表

时间:2009-04-24 01:37:47

标签: c#

我的枚举结构如下:

public enum MyEnum
{
   One=1,
   Two=2,
   Three=3
}

现在我想获得MyEnum的列表,即包含所有List<MyEnum>One Two的{​​{1}}。 Again,我正在寻找能做到这件事的一个班轮。我出来了一个LINQ查询,但它不能令人满意,因为它有点太长了,我想:

Three

更好的建议?

3 个答案:

答案 0 :(得分:14)

Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>();

答案 1 :(得分:3)

我同意@ mquander的代码。

但是,我建议您缓存列表,因为它不太可能在程序执行过程中发生变化。将它放在某个全局位置的静态只读变量中:

public static class MyGlobals
{
   public static readonly List<MyEnum> EnumList = 
       Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().ToList();
}

答案 2 :(得分:2)

不是一个单行(实现不是,但方法是:P),但可能会向工具/实用程序类添加类似this的内容,它将返回一个通用列表:

public static List<T> EnumToList<T>()

{

 Type enumType = typeof(T);

 // Can't use type constraints on value types, so have to do check like this

 if (enumType.BaseType != typeof(Enum))

  throw new ArgumentException("T must be of type System.Enum");

 return new List<T>(Enum.GetValues(enumType) as IEnumerable<T>);

}