LINQ: Получите все выбранные значения CheckBoxList с помощью Лямбда-выражения

case "$1" in
 "") echo "blank";;
 *) echo "set"
esac
36
задан p.campbell 28 July 2009 в 19:52
поделиться

2 ответа

Вы используете лямбда-выражения - они просто скрыты за счет использования вами операторов запроса C #.

Учтите, что это:

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

Компилируется так:

IEnumerable<int> allChecked = chkBoxList.Items.Cast<ListItem>()
                              .Where(i => i.Selected)
                              .Select(i => int.Parse(i.Value));

Как видите, вы уже используете два лямбда-выражения (они являются параметрами методов Where и Select ), и вы даже не знали об этом! С этим запросом все в порядке, я бы вообще не стал его менять.

87
ответ дан 27 November 2019 в 05:18
поделиться

Я бы улучшил выражение запроса, сделав неявный вызов Cast :

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

Когда вы указываете тип переменной диапазона, компилятор вставляет позвоните в Cast для вас.

В остальном я полностью согласен с Эндрю.

РЕДАКТИРОВАТЬ: Для GONeale:

IEnumerable<int> allChecked = chkBoxList.Items
                                        .Cast<ListItem>()
                                        .Where(item => item.Selected)
                                        .Select(item => int.Parse(item.Value));
22
ответ дан 27 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: