You should not delete the the items from the collection you are iterating.
foreach(DataListItem L in DataList1.Items)
Instead you should first create the list of checked items .
Then delete them from database.
Then fire the select query and then bind .
This way a select query will also be fired only once , even for multiple deletes.