I have often times wanted to write something like CheckBoxList1.Items.Where(i => i.Selected). Turns out you can't do that, because the Items property is a "specialized" collection. But to get it to work all you have to do is cast it to a generic list of ListItems like this:
var selectedItems = CheckBoxList1.Items.Cast<ListItem>().Where(i => i.Selected)
The example above uses method syntax, but you could also use query syntac like this:
var selectedItems = from i in CheckBoxList1.Items.Cast<ListItem>()
where i.Selected
select i;