Jus*_*ins 33 c# asp.net-mvc enums
这里有棘手的问题.我正在尝试将列表中的项目转换为IEnumerable<SelectListItem>.
dynamicTextInDatabase只返回我的数据库中使用的所有枚举.目前只返回1和2.数据类simple包含一个int值.
dynamicTextEnumsInDatabase 与实际存储我的枚举的类中的列表相同.
dynamicTextEnumsAll是我的应用程序中可用的所有枚举的列表.目前:1,2和3.
dynamicTextEnumsAvaiable是所有未使用的枚举的列表.它组合了所有枚举,然后删除数据库列表中的那些.
我需要dynamicTextEnumsAvaiable通过ViewBag 传递给我的View以显示在下拉列表中.但是,它必须是IEnumerable<SelectListItem>而不是List.
var dynamicTextInDatabase = new List<DynamicTextEnumData>();
var dynamicTextEnumsInDatabase = new List<DynamicTextEnum>();
var dynamicTextEnumsAll = new List<DynamicTextEnum>();
IEnumerable<SelectListItem> list;
using (var proxy = new Proxy<IDynamicText>())
{
dynamicTextInDatabase = proxy.Channel.DynamicTextGetActiveEnums(Helper.GetCallingUser());
}
foreach (DynamicTextEnumData item in dynamicTextInDatabase)
{
var dynamicTextEnum = (DynamicTextEnum)item.DynamicTextEnum;
dynamicTextEnumsInDatabase.Add(dynamicTextEnum);
}
foreach (DynamicTextEnum item in Enum.GetValues(typeof(DynamicTextEnum)))
{
dynamicTextEnumsAll.Add(item);
}
var dynamicTextEnumsAvaiable = dynamicTextEnumsAll.Except(dynamicTextEnumsInDatabase).ToList();
if (dynamicTextEnumsAvaiable.Count == 0)
{
TempData["Error"] = "To update the text of a message or warning, please select it from the grid below.";
return RedirectToAction("Index");
}
ViewBag.AvaiableEnums = dynamicTextEnumsAvaiable;
return View();
Run Code Online (Sandbox Code Playgroud)
Ric*_*Ric 71
也许试试这个?(未经测试)
ViewBag.AvaiableEnums = dynamicTextEnumsAvaiable.Select(x =>
new SelectListItem()
{
Text = x.ToString()
});
Run Code Online (Sandbox Code Playgroud)
Nin*_*Nye 13
您可以执行以下操作
ViewBag.AvaiableEnums = new SelectList(dynamicTextEnumsAvaiable)
Run Code Online (Sandbox Code Playgroud)
请参阅http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist(v=vs.118).aspx
Dav*_*ton 11
您可以使用Linq语句进行转换
IEnumerable<SelectListItem> myCollection = dynamicTextEnumsAvaiable
.Select(i => new SelectListItem()
{
Text = i.ToString(),
Value = i
});
Run Code Online (Sandbox Code Playgroud)