Try changing your where clause like so:
.Where(b => lbxItems.Items .Cast<ListItem>() // needs a cast .Where(i => i.Selected) .Select(i => i.Value) .Contains(b.Element("Category").Value))
The idea is to determine what items are selected and see if your category value is among those selected.