LINQ to CheckBoxList элементы данных - PullRequest
4 голосов
/ 15 января 2012

Я использую LINQ для извлечения проверенных элементов из элемента управления CheckBoxList:

Здесь LINQ:

    IEnumerable<int> allChecked = (from ListItem item in CheckBoxList1.Items
                                       where item.Selected 
                                       select int.Parse(item.Value));

Мой вопрос: почему элемент должен иметь тип ListItem?

Ответы [ 3 ]

4 голосов
/ 16 января 2012

CheckedListBox был создан до введения обобщений, поэтому коллекция Items возвращает объекты, а не строго типизированный ListItem.К счастью, исправить это с помощью LINQ относительно легко, используя методы OfType () (или Cast):

IEnumerable<int> allChecked = (from ListItem item in CheckBoxList1.Items.OfType<ListItem>()
                                   where item.Selected  
                                   select int.Parse(item.Value)); 
4 голосов
/ 15 января 2012

У меня вопрос, почему элемент должен быть типа ListItem?

Поскольку CheckBoxList1.Items является ObjectCollection , членами которого являются ListItem s. Вот против чего работает ваш запрос linq.

1 голос
/ 15 января 2012

почему элемент должен иметь тип ListItem?

Я думаю, что CheckBoxList наследуется от ListControl, а свойство Items наследуется от ListControl

...