如何将枚举转换为列表
How to convert enum to list
这里是枚举;
public enum myEnum{
A= 1,
B= 2,
C= 3,
D= 4,
}
我需要一个包含除 D 以外所有内容的列表,
这样它的作品;
List<Enum>{myEnum.A, myEnum.B, myEnum.C}
但当然它极其丑陋。如何直接转换和过滤这个枚举的 D
您可以将枚举转换为列表 like this:
var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList();
要删除 myEnum.D
,只需调用 Remove
方法:
var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList().Remove(myEnum.D);
如评论中所述,您也可以仅添加枚举值,而不是 myEnum.D
:
var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList().Where(val => val != myEnum.D);
Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Where(x => x != MyEnum.D).ToList();
您可以通过调用 Enum.GetValues(type)
(https://docs.microsoft.com/en-us/dotnet/api/system.enum.getvalues?view=netframework-4.8)
来获取枚举的所有值
获取所有值后,您可以排除某些不需要的值:
public class Program
{
public static void Main()
{
var allValues = Enum.GetValues(typeof (MyEnum))
.Cast<MyEnum>()
.Except(new[]{MyEnum.D})
.ToArray();
foreach (var val in allValues)
{
Console.WriteLine(val);
}
}
}
public enum MyEnum
{
A,
B,
C,
D
}
这将输出:
一个
乙
C
这里是枚举;
public enum myEnum{
A= 1,
B= 2,
C= 3,
D= 4,
}
我需要一个包含除 D 以外所有内容的列表, 这样它的作品;
List<Enum>{myEnum.A, myEnum.B, myEnum.C}
但当然它极其丑陋。如何直接转换和过滤这个枚举的 D
您可以将枚举转换为列表 like this:
var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList();
要删除 myEnum.D
,只需调用 Remove
方法:
var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList().Remove(myEnum.D);
如评论中所述,您也可以仅添加枚举值,而不是 myEnum.D
:
var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList().Where(val => val != myEnum.D);
Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Where(x => x != MyEnum.D).ToList();
您可以通过调用 Enum.GetValues(type)
(https://docs.microsoft.com/en-us/dotnet/api/system.enum.getvalues?view=netframework-4.8)
获取所有值后,您可以排除某些不需要的值:
public class Program
{
public static void Main()
{
var allValues = Enum.GetValues(typeof (MyEnum))
.Cast<MyEnum>()
.Except(new[]{MyEnum.D})
.ToArray();
foreach (var val in allValues)
{
Console.WriteLine(val);
}
}
}
public enum MyEnum
{
A,
B,
C,
D
}
这将输出:
一个 乙 C