Convert an enum to a list

Here are various was to convert enums to a lists

Original posting

Get a List of Enum Members

The idea is to use Enum.GetValues() method to get an array of the values of the constants in the enum. To get an IEnumerable<T> of all the values in the enum, call Cast<T>() on the array. To get a list, call ToList() after casting.

using System;
using System.Linq;
using System.Collections.Generic;
 
public class Example
{
    public enum Days
    {
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
        Sunday = 7
    }
 
    public static void Main()
    {
        List<Days> days = Enum.GetValues(typeof(Days))
                            .Cast<Days>()
                            .ToList();
 
        Console.WriteLine(String.Join(Environment.NewLine, days));
    }
}
 
/*
    Output:
 
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
*/

Get an Array of Enum Members

Instead of using LINQ’s Cast<T>() method, we can cast the array returned by the Enum.GetValues() method as shown below. Following solution returns an array instead of List.

using System;
 
public class Example
{
    public enum Days
    {
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
        Sunday = 7
    }
 
    public static void Main()
    {
        Days[] days = (Days[])Enum.GetValues(typeof(Days));
        Console.WriteLine(String.Join(Environment.NewLine, days));
    }
}
 
/*
    Output:
 
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
*/

Get a List of Enum members with their constant values

To get List of enum members with their associated constant values, you can use LINQ’s Select() method as demonstrated below:

using System;
using System.Linq;
using System.Collections.Generic;
 
public class Example
{
    public enum Days
    {
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
        Sunday = 7
    }
 
    public static void Main()
    {
        var days = Enum.GetValues(typeof(Days))
                        .Cast<Days>()
                        .Select(d => (d, (int)d))
                        .ToList();
 
        Console.WriteLine(String.Join(Environment.NewLine, days));
    }
}
 
/*
    Output:
 
    (Monday, 1)
    (Tuesday, 2)
    (Wednesday, 3)
    (Thursday, 4)
    (Friday, 5)
    (Saturday, 6)
    (Sunday, 7)
*/

Get a Dictionary of Enum members with their constant values

To get a Dictionary of enum members with their associated constant values, you can use LINQ’s ToDictionary() method as demonstrated below:

using System;
using System.Linq;
using System.Collections.Generic;
 
public class Example
{
    public enum Days
    {
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
        Sunday = 7
    }
 
    public static void Main()
    {
        Dictionary<string, int> days = Enum.GetValues(typeof(Days))
                                        .Cast<Days>()
                                        .ToDictionary(k => k.ToString(), v => (int)v);
 
        Console.WriteLine(String.Join(Environment.NewLine, days));
    }
}
 
/*
    Output:
 
    [Monday, 1]
    [Tuesday, 2]
    [Wednesday, 3]
    [Thursday, 4]
    [Friday, 5]
    [Saturday, 6]
    [Sunday, 7]
*/