Razor 如何在选项中创建包含不同文本的下拉列表

Razor 如何在选项中创建包含不同文本的下拉列表,razor,asp.net-mvc-5,selectlist,Razor,Asp.net Mvc 5,Selectlist,我正在从数据库中获取元素列表: ViewBag.Id = new SelectList(db.UserRegister, "Id", "SystemCode"); 以及以下观点: @Html.DropDownList("Id", null }) 我得到的结果是: Value | Text 1 | James 2 | James 3 | John 我想要的是: Value | Text 1 | James 3 | John 上面文本James的值可以

我正在从数据库中获取元素列表:

ViewBag.Id = new SelectList(db.UserRegister, "Id", "SystemCode");
以及以下观点:

@Html.DropDownList("Id", null })
我得到的结果是:

Value | Text
  1   | James
  2   | James
  3   | John
我想要的是:

Value | Text
  1   | James
  3   | John
上面文本
James
的值可以是
1
2
,没关系,我得到的文本将始终是
James

如何创建包含不同
文本的下拉列表,如上图所示


任何帮助都将不胜感激,提前感谢:)

您的linq查询需要执行GroupBy

db.UserRegister.GroupBy(x => x.SystemCode)
                    .Select(g => new SelectListItem {Value = g.Min(w => w.Id), Text = g.Key})
                    .ToList();
然后我会把你的观点改为

@Html.DropDownListFor(x => x.Id, ViewBag.Id);

linq查询需要执行GroupBy

db.UserRegister.GroupBy(x => x.SystemCode)
                    .Select(g => new SelectListItem {Value = g.Min(w => w.Id), Text = g.Key})
                    .ToList();
然后我会把你的观点改为

@Html.DropDownListFor(x => x.Id, ViewBag.Id);

如果ID的值无关紧要,那么包含ID是没有意义的,因此您最好只执行
var names=db.YourTable.Select(x=>x.Text.Distinct();ViewBag.Id=新的选择列表(名称)
@StephenMuecke Id的值在某种意义上并不重要,
James
只属于
1
2
,而不属于
3
,因此,
James
的值是
1
2
并不重要,但它肯定需要是其中之一。如果Id的值不重要,然后包含ID是没有意义的,所以您最好只执行
var names=db.YourTable.Select(x=>x.Text.Distinct();ViewBag.Id=新的选择列表(名称)
@StephenMuecke Id的值在某种意义上并不重要,
James
只属于
1
2
,而不属于
3
,因此,
James
的值是
1
2
并不重要,但它肯定需要是其中之一。