Here are various was to convert enums to a lists
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]
*/