LINQ to CheckBoxList 数据项

Posted

技术标签:

【中文标题】LINQ to CheckBoxList 数据项【英文标题】:LINQ to CheckBoxList data items 【发布时间】:2012-02-10 21:36:58 【问题描述】:

我正在使用 LINQ 从 CheckBoxList 控件中检索已检查的项目:

这里是 LINQ:

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

我的问题是为什么 item 必须是 ListItem 类型?

【问题讨论】:

【参考方案1】:

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】:

我的问题是为什么 item 必须是 ListItem 类型?

因为CheckBoxList1.Items 是一个ObjectCollection,其成员为ListItems。这就是您的 linq 查询所针对的。

【讨论】:

【参考方案3】:

为什么项目必须是 ListItem 类型?

我认为是因为CheckBoxList 继承自ListControlItems 属性继承自ListControl

【讨论】:

以上是关于LINQ to CheckBoxList 数据项的主要内容,如果未能解决你的问题,请参考以下文章

检查 CheckBoxList 是不是有任何选定的值

如何在C#中将Linq to SQL数据序列化为JSON

学习Linq To Sql

LINQ to SQL查询中的C#Dynamic WHERE子句

初识Linq to Entity

Linq学习随笔一------LINQ to Objects