我从枚举创建一个下拉列表.
- public enum Level
- {
- Beginner = 1,Intermediate = 2,Expert = 3
- }
这是我的扩展名
- public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
- {
- IEnumerable<TEnum> values = Enum.GetValues(typeof(TEnum)).Cast<TEnum>();
- var result = from TEnum e in values
- select new { ID = (int)Enum.Parse(typeof(TEnum),e.ToString()),Name = e.ToString() };
- var tempValue = new { ID = 0,Name = "-- Select --" };
- return new SelectList(result,"Id","Name",enumObj);
- }
我的问题是将antoher项插入到IEnumerable中.我不知道该怎么做.有人可以修改我的代码,将“–select–”插入到顶部.
解决方法
您不能修改IEnumerable< T>对象,它只提供一个枚举元素的接口.但是您可以使用.ToList()来转换IEnumerable< T>到列表< T>.
我不知道这是你想要的:
- public static SelectList ToSelectList<TEnum>(this TEnum enumObj)
- {
- IEnumerable<TEnum> values = Enum.GetValues(typeof(TEnum)).Cast<TEnum>();
- var result = from TEnum e in values
- select new { ID = (int)Enum.Parse(typeof(TEnum),Name = e.ToString() };
- var tempValue = new { ID = 0,Name = "-- Select --" };
- var list = result.ToList(); // Create mutable list
- list.Insert(0,tempValue); // Add at beginning of list
- return new SelectList(list,enumObj);
- }