选择列表操作以在单个列表中合并2个集合

时间:2013-04-16 10:12:41

标签: asp.net-mvc-4 selectlist selectlistitem

ViewBag.WList = new SelectList(_bdb.BMW.OrderBy(o => o.NAME).AsEnumerable(), "ID", "NAME");

这就是我在控制器中使用视图代码下方设置我的选择列表的方法。

@Html.DropDownList("WOptions", (SelectList)ViewBag.WList, "Select an option", new { style = "width:250px;" })

我的数据库中有一个表,我也无法添加新记录,我需要引用它作为我的主选项列表,另外我需要添加2条新记录来引用异常。

基本上在我的创建表单上,我有我的选项列表和类型列表,因为其中一个选项不合适所以2个新选项已添加为类型列表形式的不同下拉列表。

录制或显示它并不是一个问题,但根据上面的代码我的剑道列表上有一个过滤器。

我想知道在病房清单中添加2个选项的最佳方法是,如果我可以使用现有代码或需要使用其他方法吗?

另外我试过了,

SelectList options = new SelectList(_bdb.BMW.OrderBy(o => o.NAME).AsEnumerable(), "ID", "NAME");
        options.ToList().Insert(11, (new SelectListItem { Text = "Example1", Value = "11" }));
        options.ToList().Insert(22, (new SelectListItem { Text = "Example2", Value = "22" }));
ViewBag.WList = options;

虽然这仍然显示原始选择列表,但它不显示新项目,这是迄今为止唯一不会导致错误的变种。

非常感谢任何想法或建议。

1 个答案:

答案 0 :(得分:1)

Linq扩展.ToList()返回List的新实例。因此options.ToList()不引用内部列表,这就是后两个项未插入内部列表的原因。到处走走,

var bmws = _bdb.BMW.OrderBy(o => o.NAME).Select(x => new { ID = x.ID, NAME = x.NAME }).ToList();
bmws.Insert(11, (new { ID = "11", NAME = "Example1" }));
bmws.Insert(22, (new { ID = "22", NAME = "Example2" }));
var options = new SelectList(bmws.AsEnumerable(), "ID", "NAME");

我没有测试过代码,但这应该可以解决问题。 希望这会有所帮助。