我使用LINQ从CheckBoxList控件中检索已检查的项目:
LINQ:
IEnumerable<int> allChecked = (from ListItem item in CheckBoxList1.Items
where item.Selected
select int.Parse(item.Value));
我的问题是为什么item必须是ListItem类型?
答案 0 :(得分:4)
我的问题是为什么item必须是ListItem类型?
因为CheckBoxList1.Items
是ObjectCollection,其成员为ListItem
s。这就是你的linq查询所反对的。
答案 1 :(得分:4)
CheckedListBox是在引入泛型之前创建的,因此Items集合返回的是对象而不是强类型的ListItem。幸运的是,使用OfType()(或Cast)方法使用LINQ修复它是相对容易的:
IEnumerable<int> allChecked = (from ListItem item in CheckBoxList1.Items.OfType<ListItem>()
where item.Selected
select int.Parse(item.Value));
答案 2 :(得分:1)
为什么item必须是ListItem类型?
我认为因为CheckBoxList
继承自ListControl
而Items
属性继承自ListControl