如何使用MultiSelectList?

时间:2014-01-21 21:36:27

标签: c# linq multi-select linqpad

我在下面编译错误:

  

参数2:无法从'System.Collections.Generic.IEnumerable'转换为'string'

     

参数3:无法从'System.Collections.Generic.IEnumerable'转换为'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();
}

1 个答案:

答案 0 :(得分:3)

MultiSelectList(items, dataValueField, dataTextField, selectedValues)构造函数需要四个参数:

  • items 集合 - 您正确传递它们
  • dataValueField string - 这是您的第一个错误。您应该传递值字段名称,而不是传递所有值。
  • dataTextField string - 这是您的第二个错误。您应该传递文本字段的名称,而不是传递所有文本值。
  • selectedValues 集合 - 这是您的第三个错误。您应该仅传递值(在您的情况下为15),而不是传递具有所选值的项目。

所以,正确的代码是

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

我建议您仔细阅读错误消息,查看IntelliSense提示,并使用MSDN获取有关您正在使用的类型的信息。