我正在编写以下代码行来提取checklistbox中的所选项目。
ListItemCollection ChecklistBoxCollection = new ListItemCollection();
foreach (ListItem ChecklistBoxItem in ChecklistBox.Items)
if (ChecklistBox.Selected)
ChecklistCollection.Add(ChecklistBox);
有没有办法在LinQ中获取这些项目?
答案 0 :(得分:1)
没有自动转换为ListItemCollection,但您可以使用AddRange一次添加所选项目。我不确定这是一个很大的改进,可能会更慢,因为AddRange只接受一个数组。
ListItemCollection ChecklistBoxCollection = new ListItemCollection();
ChecklistBoxCollection.AddRange( checklistBox.Items
.Cast<ListItem>()
.Where( i => i.Selected )
.ToArray() );
答案 1 :(得分:0)
我一直在使用这些扩展方法。
public static List<string> GetCheckedValues(this CheckBoxList list)
{
var values = new List<string>();
values.AddRange(from ListItem item in list.Items
where item.Selected
select item.Value);
return values;
}
public static List<string> GetCheckedTexts(this CheckBoxList list)
{
var values = new List<string>();
values.AddRange(from ListItem item in list.Items
where item.Selected
select item.Text);
return values;
}