C# 使用distinct的asp.net 4.5 MVC SQL @foreach(模型中的var项){string mytown=item.town.*在此处输入distinct*@mytown
这将选择我数据库中的所有城镇名称,并将其显示在下拉菜单中 我如何更改它,使其在显示城镇名称时,仅显示每个城镇名称一次 例如,如果数据库中有3个伦敦人,它将在下拉菜单中显示所有3个伦敦人。我希望它只显示1个伦敦人C# 使用distinct的asp.net 4.5 MVC SQL @foreach(模型中的var项){string mytown=item.town.*在此处输入distinct*@mytown,c#,sql,asp.net-mvc,distinct,C#,Sql,Asp.net Mvc,Distinct,这将选择我数据库中的所有城镇名称,并将其显示在下拉菜单中 我如何更改它,使其在显示城镇名称时,仅显示每个城镇名称一次 例如,如果数据库中有3个伦敦人,它将在下拉菜单中显示所有3个伦敦人。我希望它只显示1个伦敦人 仅供参考:很抱歉,这看起来像是一个重新发布,但我之前发布了错误的代码为什么不将其转换为HashSet() var hs=新哈希集(模型); 给定,模型是否为IEnumerable 或者,在控制器中,通过将列表转换为哈希集,然后将其作为IEnumerable传递给模型来执行此操作 或者这
仅供参考:很抱歉,这看起来像是一个重新发布,但我之前发布了错误的代码为什么不将其转换为
HashSet()
var hs=新哈希集(模型);
给定,模型
是否为IEnumerable
或者,在控制器中,通过将列表
转换为哈希集
,然后将其作为IEnumerable
传递给模型来执行此操作
或者这个:
从Model.Distinct()中的y选择y
据我所知,如果使用ID作为值,则无法执行此操作
var hs = new HashSet<string>(Model);
说
更好的方法是使用LINQ。从数据库获取列表,然后在控制器towns.Where(x=>x.Name==x.Name.Distinct();
进一步
内部控制器动作
ID | Value
1 Landon
2 Landon
3 Landon
4 Los Angeles
内部视图
ViewBag.towns = new SelectList(towns.Where(x => x.Name == x.Name.Distinct()).ToList(), "Value", "Text");
这是一个重新发布..但它不会改变您上一个问题的答案。请使用
Distinct
。您应该在控制器中执行此操作。@SimonWhitehead我向您道歉
ID | Value
1 Landon
2 Landon
3 Landon
4 Los Angeles
ViewBag.towns = new SelectList(towns.Where(x => x.Name == x.Name.Distinct()).ToList(), "Value", "Text");
@Html.DropDownListFor(x => x.SelectedTown, new SelectList(ViewBag.towns, "ID", "Name", Model.SelectedTown))