簡體   English   中英

asp.net 4.5使用不同的MVC SQL

[英]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);

給定, ModelIEnumerable<string>

或者,在控制器中執行此操作,方法是將List<T>轉換為HashSet<T> ,然后將其作為IEnumerable<T>傳遞給模型。

或者這個:

from y in Model.Distinct() select y

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM