如何将枚举转换为列表

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

https://dotnetfiddle.net/hdZmAK