[英]asp.net 4.5 MVC SQL using distinct
@foreach (var item in Model) { string mytown = item.town.*enter distinct here* <option value="@mytown"> @mytown</option>
這將選擇我的數據庫中的所有城鎮名稱,並讓它顯示在下拉菜單中。
如何改變這一點,以便當它顯示城鎮名稱時,它只會顯示一次城鎮名稱。
例如,如果我在數據庫中有3個londons,它將在下拉菜單中顯示所有3個londons。 我希望它只顯示1倫敦
僅供參考:對不起,這可能看起來像轉貼,但我之前發布了錯誤的代碼
myCollection.Select(x => x.Name).Distinct().ToList();
據我所知,如果您使用ID作為值,則無法執行此操作。
說
ID | Value
1 Landon
2 Landon
3 Landon
4 Los Angeles
更好的方法是使用LINQ實現這一目標。 從數據庫中獲取列表,然后在控制器towns.Where(x => x.Name == x.Name.Distinct());
過濾它。其中towns.Where(x => x.Name == x.Name.Distinct());
內部控制器動作
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))
為什么不將它轉換為HashSet<string>()
?
var hs = new HashSet<string>(Model);
給定, Model
是IEnumerable<string>
?
或者,在控制器中執行此操作,方法是將List<T>
轉換為HashSet<T>
,然后將其作為IEnumerable<T>
傳遞給模型。
或者這個:
from y in Model.Distinct() select y
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.