在@Html.DropDownListFor(MVC3)中循环IEnumerable

时间:2013-01-21 13:01:22

标签: asp.net-mvc-3 linq collections

我有一组模型正在传递给我的视图,我想在下拉列表中显示每个model.property。问题是我的代码中有一个错误,它显示了两个重复的项目。

@model IEnumerable<UserManager.Models.vw_UserManager_Model>

@Html.Label("BRAD Module:")&nbsp
@Html.DropDownListFor(model => model.FirstOrDefault().module_name, Model.Select(x => new SelectListItem { Text = x.module_name, Value = x.module_name }), new { id = "ddlSelectedBrad", onchange = "chkSelection()" })

我目前正在使用FirstOrDefault()来访问我的模型集合中每个模型的模块名称。但通过这样做,我有一个重复的值。

请参阅以下屏幕截图:

enter image description here

市场:LEISURE显示两次

enter image description here

情报显示两次。如果我更改此下拉列表值并返回此屏幕,则会显示两个重复值。 的摘要

有没有人知道编写LINQ查询的更好方法?

感谢。

1 个答案:

答案 0 :(得分:0)

而不是

Model.Select(x => new SelectListItem { Text = x.module_name, Value = x.module_name })

尝试

Model.GroupBy(x => x.module_name).Select(x => new SelectListItem { Text = x.First().module_name, Value = x.First().module_name })

这应该过滤重复的记录。