我的枚举结构如下:
public enum MyEnum
{
One=1,
Two=2,
Three=3
}
现在我想获得MyEnum
的列表,即包含所有List<MyEnum>
,One
Two
的{{1}}。 Again,我正在寻找能做到这件事的一个班轮。我出来了一个LINQ查询,但它不能令人满意,因为它有点太长了,我想:
Three
更好的建议?
答案 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>);
}