将List转换为IEnumerable

这里有棘手的问题。 我正在尝试将列表的项目转换为IEnumerable

清单

dynamicTextInDatabase只返回我的数据库中使用的所有枚举。 目前只返回1和2.数据类simple包含一个int值。

dynamicTextEnumsInDatabase与实际存储我的枚举的类中的列表相同。

dynamicTextEnumsAll是我的应用程序中可用的所有枚举的列表。 目前:1,2和3。

dynamicTextEnumsAvaiable是所有未使用的枚举的列表。 它组合了所有枚举,然后删除数据库列表中的那些。

我需要通过dynamicTextEnumsAvaiabledynamicTextEnumsAvaiable传递给我的View,以显示在下拉列表中。 但是,它必须是IEnumerable而不是List

  List dynamicTextInDatabase = new List(); List dynamicTextEnumsInDatabase = new List(); List dynamicTextEnumsAll = new List(); IEnumerable list; using (var proxy = new Proxy()) { dynamicTextInDatabase = proxy.Channel.DynamicTextGetActiveEnums(Helper.GetCallingUser()); } foreach (DynamicTextEnumData item in dynamicTextInDatabase) { DynamicTextEnum dynamicTextEnum = (DynamicTextEnum)item.DynamicTextEnum; dynamicTextEnumsInDatabase.Add(dynamicTextEnum); } foreach (DynamicTextEnum item in Enum.GetValues(typeof(DynamicTextEnum))) { dynamicTextEnumsAll.Add(item); } List 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(); 

也许试试这个? ( 未经测试

 ViewBag.AvaiableEnums = dynamicTextEnumsAvaiable.Select(x => new SelectListItem() { Text = x.ToString() }); 

您可以执行以下操作

 ViewBag.AvaiableEnums = new SelectList(dynamicTextEnumsAvaiable) 

请参阅http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist(v=vs.118).aspx

您可以使用Linq语句进行转换

 IEnumerable myCollection = dynamicTextEnumsAvaiable .Select(i => new SelectListItem() { Text = i.ToString(), Value = i }); 

你有没有尝试过

 IEnumerable myCollection = dynamicTextEnumsAvaiable.AsEnumerable() 

只需使用.AsEnumerable()方法。

例:

 IEnumerable myCollection = dynamicTextEnumsAvaiable.AsEnumerable() 

点击这里: https : //msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable(v=vs.110).aspx