[英]Convert List to IEnumerable<SelectListItem>
Tricky problem here.棘手的问题在这里。 I'm trying to convert items for a list to
IEnumerable<SelectListItem>
.我正在尝试将列表的项目转换为
IEnumerable<SelectListItem>
。
dynamicTextInDatabase
simply returns all the Enums that are used in my database. dynamicTextInDatabase
只返回在我的数据库中使用的所有枚举。 Currently only returns 1 and 2. The data class simple holds an int value.目前只返回 1 和 2。数据类 simple 保存一个 int 值。
dynamicTextEnumsInDatabase
is the same list as above just in the class that actually stores my Enums. dynamicTextEnumsInDatabase
是与上面相同的列表,只是在实际存储我的枚举的类中。
dynamicTextEnumsAll
is a list of all the Enums that are available in my application. dynamicTextEnumsAll
是我的应用程序中可用的所有枚举的列表。 Currently: 1, 2 and 3.当前:1、2 和 3。
dynamicTextEnumsAvaiable
is a list of all the unused Enums. dynamicTextEnumsAvaiable
是所有未使用的枚举的列表。 It combines All the Enums and then removes the ones that are in the database list.它组合了所有枚举,然后删除了数据库列表中的枚举。
I need to pass the dynamicTextEnumsAvaiable
to my View via the ViewBag to display in a drop-down list.我需要通过
dynamicTextEnumsAvaiable
将dynamicTextEnumsAvaiable
传递给我的视图以显示在下拉列表中。 However, It must be IEnumerable<SelectListItem>
rather than a List
.但是,它必须是
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();
Maybe try this?也许试试这个? ( untested )
(未经测试)
ViewBag.AvaiableEnums = dynamicTextEnumsAvaiable.Select(x =>
new SelectListItem()
{
Text = x.ToString()
});
You could do the following您可以执行以下操作
ViewBag.AvaiableEnums = new SelectList(dynamicTextEnumsAvaiable)
See http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist(v=vs.118).aspx请参阅http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist(v=vs.118).aspx
You can maybe use a Linq statement to convert it您可以使用 Linq 语句来转换它
IEnumerable<SelectListItem> myCollection = dynamicTextEnumsAvaiable
.Select(i => new SelectListItem()
{
Text = i.ToString(),
Value = i
});
If you need to convert a List of objects (without Enums) to IEnumerable, you can use a declarative style of LINQ:如果您需要将对象列表(不带枚举)转换为 IEnumerable,您可以使用 LINQ 的声明式样式:
var items = from TipoDoc t in tipoDocs
select new SelectListItem {Value = t.Id, Text = t.Description};
Here, tipoDocs is a List of objects of type TipoDoc这里,tipoDocs 是一个 TipoDoc 类型的对象列表
public class TipoDoc
{
public string Id { get; set; }
public string Description { get; set; }
}
你试过吗
IEnumerable<SelectListItem> myCollection = dynamicTextEnumsAvaiable.AsEnumerable()
Just use .AsEnumerable() method.只需使用.AsEnumerable()方法。
Example:示例:
IEnumerable<SelectListItem> myCollection = dynamicTextEnumsAvaiable.AsEnumerable()
Check out here: https://msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable(v=vs.110).aspx在这里查看: https : //msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable(v=vs.110).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.