Использование distinct() в DropDownListFor

#model-view-controller #dropdownlistfor

#model-view-controller #dropdownlistfor

Вопрос:

Я пытаюсь использовать distinct() в моем DropDownListFor, чтобы избавиться от дубликатов. Модель.Категории содержат список строк. Пробовал разные «комбинации», но не могу заставить это работать .. Я думал, что приведенный ниже пример выполнит трик, но он по-прежнему показывает дубликаты.

 @Html.DropDownListFor(model => model.CatDropTemp,
                                                Model.Categories.Select(kat => new SelectListItem { Text = kat, Value = kat }).Distinct())
 

Может быть, мне нужно изменить всю конструкцию списка или мне чего-то не хватает?

Редактировать:

Нашел этот синтаксис здесь, на форуме:

  @Html.DropDownList(
                "Foo",
                 new SelectList(
                 Model.Categories.Select(x => new { Value = x, Text = x }).Distinct(),
                 "Value",
                 "Text"
               )
             )
 

Однако это касается Distinct()-части…С этим синтаксисом я не могу видеть, куда я добавляю свой

 new{@class="form-control"}
 

Может быть, какие-нибудь советы по этому поводу?

Ответ №1:

Я думаю, вам нужно сделать свой distinct ранее в цепочке, не похоже, что SelectListItem реализует какие-либо интерфейсы равенства / сравнения (при условии, что ваша модель переопределяет Equals и GetHashCode)