Словарные ключи и значения для выбранного списка
Dictionary<string,string> dict = new Dictionary<string,string>();
dict.add("a1", "Car");
dict.add("a2", "Van");
dict.add("a3", "Bus");
SelectList SelectList = new SelectList((IEnumerable)mylist, "ID", "Name", selectedValue);
в приведенном выше коде я поместил список "mylist" в список Select. Идентификатор и имя - это два свойства этого списка объектов (mylist).
Также мне нужно добавить словарь в список выбора.
**
Необходимо добавить ключ словаря к параметру "значение данных" - ( "Позиция ID вышеприведенного примера" )
Необходимо добавить значение словаря к параметру "текст данных" - (позиция "Имя" в приведенном выше примере)
Итак, скажите мне, как создать список выбора, используя эти словарные ключи и значения, без создания нового класса.
Ответы
Ответ 1
Вы можете попробовать:
SelectList SelectList = new SelectList((IEnumerable)dict, "Key", "Value", selectedValue);
Dictionary<string, string>
реализует IEnumerable<KeyValuePair<string, string>>
, а KeyValuePair
предоставляет свойства Key
и Value
.
Помните, однако, что порядок элементов, возвращаемых путем перечисления Dictionary<string,string>
, не гарантируется. Если вы хотите получить гарантированный заказ, вы можете сделать что-то вроде:
SelectList SelectList = new SelectList(dict.OrderBy(x => x.Value), "Key", "Value", selectedValue);
Ответ 2
Все, что вам действительно нужно сделать, это передать словарь в качестве параметра и использовать перегрузку:
public SelectList(IEnumerable items, string dataValueField, string dataTextField);
Пример:
var dictionary = new Dictionary<string, string>
{
{"a1", "Car"},
{"a2", "Van"},
{"a3", "Bus"}
};
var selectList = new SelectList(dictionary, "Key", "Value");
Я знаю, что сообщение немного устарело, но я пришел сюда, чтобы найти ответ, и пришел к такому выводу, основываясь на ранее полученных ответах.
Ответ 3
Вы можете создать список объектов SelectListItem из Словаря, а затем создать из него SelectList.
var dict = new Dictionary<string, string>
{
{"a1", "Car"},
{"a2", "Van"},
{"a3", "Bus"}
};
var myListItems = new List<SelectListItem>();
myListItems.AddRange(dict.Select(keyValuePair => new SelectListItem()
{
Value = keyValuePair.Key,
Text = keyValuePair.Value
}));
var myList = new SelectList(myListItems);
Ответ 4
Try
SelectList SelectList = new SelectList((IEnumerable)mylist, "Key", "Value", selectedValue);
Ответ 5
Мне нравится писать это вот так:
@Html.DropDownListFor(model => model.Delimiter,
new Dictionary<string, string>
{
{",", ", (Comma)"},
{ ";", "; (Semicolon)"}
}.Select(x => new SelectListItem {Value = x.Key, Text = x.Value}))
Таким образом, вам не нужно полагаться на строки "Key"
и "Value"
.