How can I convert an enumeration into a List<SelectListItem>?
Solution 1:
You can use LINQ:
Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Select(v => new SelectListItem {
Text = v.ToString(),
Value = ((int)v).ToString()
}).ToList();
Solution 2:
Since MVC 5.1, the most elegant way would be to use EnumDropDownListFor method of Html helper if you need to populate select
options in your view:
@Html.EnumDropDownListFor(m => m.MyEnumProperty,new { @class="form-control"})
or GetSelectList method of EnumHelper in your controller:
var enumList = EnumHelper.GetSelectList(typeof (MyEnum));
Solution 3:
I did this using a static method that I could reuse.
public static IEnumerable<SelectListItem> EnumToSelectList<T>()
{
return (Enum.GetValues(typeof(T)).Cast<T>().Select(
e => new SelectListItem() { Text = e.ToString(), Value = e.ToString() })).ToList();
}