2014-12-04 3 views
0

Вот мой код для отображения данных из моего db в раскрывающемся списке. Я ищу способ удалить дубликаты, чтобы отобразить только один экземпляр каждого. Кто-нибудь знает простой способ сделать это?Удаление дубликатов из списка в MVC 4

@model IEnumerable<bookingsMVC.Models.member> 
<select id="myTown"> 

@foreach (var item in Model) 
{ 

    <option id="@Html.DisplayFor(model => item.town)" value="@Html.DisplayFor(model => item.town)"> @Html.DisplayFor(model => item.town)</option> 


} 
</select> 

Модель:

namespace bookingsMVC.Models 
{ 
public class member 
{ 
    public int ID { get; set; } 
    public string username { get; set; } 
    public string fname { get; set; } 
    public string lname { get; set; } 
    public string address1 { get; set; } 
    public string address2 { get; set; } 
    public string town { get; set; } 
    public string postcode { get; set; } 
    public string phone { get; set; } 
    public string email { get; set; }  
    public string password { get; set; } 
    public string memcat { get; set; } 
    public string Admin { get; set; } 
} 
} 
+0

Пожалуйста, покажите свое определение модели, свой метод действия и объявление @model в представлении. – CodeCaster

ответ

1

в общем, чтобы сохранить полный Item объект, вы можете использовать GroupBy с First() для получения первого из каждой группы:

@foreach (var item in Model.GroupBy(m => m.town).Select(g => g.First())) 
... 
+0

Спасибо за это! Знаете ли вы способ сделать в работе, где дубликаты не чувствительны к регистру? – Jason

+1

? 'GroupBy (m => m.town.ToLower())'. Он будет возвращен в случайный случай, если вы не сделаете 'OrderBy' перед' .First() ' – StuartLC

+1

Спасибо, Great help =] – Jason

2

вы можете сделать это в вашем контроллере и управлять фактической фильтрации по отчетливым города там и таким образом вы можете просто передать список с различными значениями города к вашему ViewModel

Смежные вопросы