2014-11-10 3 views
-1
Dim list As New List(Of String) 

list = chkparameter.Items 
        .Cast(Of ListItem) 
        .AsEnumerable() 
        .Where(Function(x) x.Selected) 
        .Select(Function(x) x.Value) 

Ошибка я получаюОтображение списка выбранных элементов в CheckBoxList

Невозможно привести объект типа 'WhereSelectEnumerableIterator 2[System.Web.UI.WebControls.ListItem,System.String]' to type 'System.Collections.Generic.List 1 [System.String].

Как исправить это.

Благодаря

ответ

0

Если вы хотите присвоить результат к List(Of String) переменной, то вам нужно List(Of String) объект. Вы можете все ToList в любом перечислимом списке, чтобы создать List(Of T).

Кроме того, ваш звонок AsEnumerable бессмысленен, потому что Cast(Of T) уже возвращает IEnumerable(Of T).

И, наконец, объявление переменной на одной строке, а затем ее значение является излишне подробным. Это не так, но это бессмысленно. В вашем случае вы не только объявляете переменную, но также создаете объект, который вы никогда не используете. Не создавайте объект New, если вы на самом деле не хотите новый объект, который вы не используете, потому что вы получаете объект на самой следующей строке.

Dim list As List(Of String) = chkparameter.Items. 
              Cast(Of ListItem). 
              Where(Function(x) x.Selected). 
              Select(Function(x) x.Value). 
              ToList() 

Там также нет необходимости объявлять тип переменной, так как она будет выведена из Инициирование выражения, т.е. ToList возвращает List(Of String) поэтому тип переменной можно вывести из этого. Не всем нравится использовать вывод типа, где это не совсем очевидно, поэтому я отпущу вас от этого. Я склонен делать это, хотя:

Dim list = chkparameter.Items. 
         Cast(Of ListItem). 
         Where(Function(x) x.Selected). 
         Select(Function(x) x.Value). 
         ToList() 

Кстати, обратите внимание, насколько проще код читать с некоторым разумным форматированием? Если вы собираетесь использовать синхронный синтаксис такой функции, очень полезно поместить каждую функцию в другую строку, когда вы получите больше двух или трех.

+0

Спасибо yaar, я решил это –

+0

Мне было бы интересно узнать, почему кто-то отказался от этого ответа. Тот факт, что он был принят ОП в качестве решения, говорит о том, что это хороший ответ, и тот факт, что он конкретно решает проблему результата выражения, которое не может быть назначено переменной, говорит о том, что это хороший ответ. Для чего нужен нижний план? – jmcilhinney

Смежные вопросы