Convert an enum to a list in C#
This post will discuss how to convert an enum to a list in C#.
1. Get a list of Enum members
The idea is to use the Enum.GetValues() method to get an array of the enum constants’ values. 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.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
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 */ |
2. 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. The following solution returns an array instead of a list.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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 */ |
3. Get a list of Enum members with their constant values
To get a list of enum members with their associated constant values, you can use LINQ’s Select() method, as demonstrated below:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
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) */ |
4. 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:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
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] */ |
That’s all about converting an enum to a list in C#.
Thanks for reading.
To share your code in the comments, please use our online compiler that supports C, C++, Java, Python, JavaScript, C#, PHP, and many more popular programming languages.
Like us? Refer us to your friends and support our growth. Happy coding :)