2014-01-21 2 views
-3

я получил ошибку компиляции ниже:Как использовать MultiSelectList?

Аргумент 2: не может конвертировать из 'System.Collections.Generic.IEnumerable' в 'строка'

Аргумент 3: не может конвертировать из «System.Collections.Generic. IEnumerable 'to' string '

Как исправить эту ошибку?

void Main() 
{ 
    SortedDictionary<int, string> items = new SortedDictionary<int, string>{{1, "apple"}, {2, "book"}, {3, "tree"}, {4, "mazagine"}, {5, "orange"}}; 
    MultiSelectList msl = new MultiSelectList(items, items.Select(o => o.Key), items.Select(o => o.Value), items.Where(i => i.Key == 1 || i.Key == 5)).Dump(); 
} 
+0

Что неясно о сообщениях об ошибках? Мы могли бы помочь вам, если вы расскажете, что вы понимаете ими. –

+1

Ошибка довольно понятная. Вы передаете коллекцию, в которой ожидается строка. –

+0

Попробуйте 'new MultiSelectList (элементы,« Key »,« Value », new [] {1, 5})' –

ответ

3

MultiSelectList(items, dataValueField, dataTextField, selectedValues) конструктор четыре параметра:

  • вещи коллекция - вы правильно
  • , передавая их DataValueFieldstring - вот ваша первая ошибка. Вы должны передать имя поля значения вместо передачи всех значений.
  • dataTextFieldstring - вот ваша вторая ошибка. Вы должны передать имя текстового поля вместо передачи всех текстовых значений.
  • selectedValues ​​ коллекция - вот ваша третья ошибка. Вы должны передавать только значения (то есть 1 и 5 в вашем случае) вместо передачи элементов, которые выбрали значения.

Таким образом, правильный код

new MultiSelectList(items, "Key", "Value", new [] { 1, 5 }) 

Я предлагаю вам внимательно прочитать сообщения об ошибках, смотрите на IntelliSense подсказки и использовать MSDN, чтобы получить информацию о типах, которые вы используете.

+1

Этот способ также работа. MultiSelectList msl1 = новый MultiSelectList (элементы, «Key», «Value», items.Select (o => o.Key) .Where (o => o == 1 || o == 5)). Dump(); –

+0

@Matthew да, это даже лучше, если возможно, что некоторые из выбранных значений не могут присутствовать в элементах –