Как конвертировать enum в список - PullRequest
0 голосов
/ 21 мая 2019

Вот enum;

   public enum myEnum{   
    A= 1,
    B= 2,
    C= 3,
    D= 4,
}

Мне нужен список, содержащий все, кроме D, таким образом, его работает;

List<Enum>{myEnum.A, myEnum.B, myEnum.C}

но, конечно, это очень уродливо.Как можно напрямую конвертировать и фильтровать D из этого перечисления

Ответы [ 3 ]

5 голосов
/ 21 мая 2019
Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Where(x => x != MyEnum.D).ToList();
2 голосов
/ 21 мая 2019

Вы можете преобразовать перечисление в список , как это :

var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList();

И чтобы удалить myEnum.D, просто вызовите метод Remove:

var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList().Remove(myEnum.D);

Как уже упоминалось в комментариях, вы также можете добавить только значения Enums, которые не являются myEnum.D:

var enumList = Enum.GetValues(typeof(myEnum)).Cast<myEnum>().ToList().Where(val => val != myEnum.D);
1 голос
/ 21 мая 2019

Вы можете получить все значения перечисления, вызвав 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
}

Будет выведено:

ABC

https://dotnetfiddle.net/hdZmAK

...