有一个棘手的问题。我正在尝试将列表中的项目转换为 IEnumerable<SelectListItem>
。
列表
dynamicTextInDatabase
只是返回在我的数据库中使用的所有枚举。目前只返回 1 和 2。数据类只包含一个 int 值。
dynamicTextEnumsInDatabase
是与上面相同的列表,只不过在实际存储我的枚举的类中。
dynamicTextEnumsAll
是可用于我的应用程序的所有枚举的列表。当前:1、2 和 3。
dynamicTextEnumsAvaiable
是所有未使用的枚举的列表。它结合了所有枚举,然后删除了数据库列表中的枚举。
我需要通过 ViewBag 将 dynamicTextEnumsAvaiable
传递到我的视图中以在下拉列表中显示。但是,它必须是 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();