#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)