Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Delete all items from a list

Tags:

c#

list

I want to delete all the elements from my list:

foreach (Session session in m_sessions) {     m_sessions.Remove(session); } 

In the last element I get an exception: UnknownOperation.

Anyone know why?

how should I delete all the elements? It is ok to write something like this:

m_sessions = new List<Session>(); 
like image 427
janneob Avatar asked Apr 02 '12 16:04

janneob


People also ask

How do I delete all items from a SharePoint list?

In your SharePoint site you can go to your list and You can click on the checkbox beside the first item on the list (It should highlight all of the items) and then click on "Items" in the List Tools ribbon and you will see a delete button.


2 Answers

You aren't allowed to modify a List<T> whilst iterating over it with foreach. Use m_sessions.Clear() instead.

Whilst you could write m_sessions = new List<Session>() this is not a good idea. For a start it is wasteful to create a new list just to clear out an existing one. What's more, if you have other references to the list then they will continue to refer to the old list. Although, as @dasblinkenlight points out, m_sessions is probably a private member and it's unlikely you have other references to the list. No matter, Clear() is the canonical way to clear a List<T>.

like image 197
David Heffernan Avatar answered Sep 18 '22 17:09

David Heffernan


Never, ever, modify a collection that is being iterated on with foreach. Inserting, deleting, and reordering are no-nos. You may, however, modify the foreach variable (session in this case).

In this case, use

m_sessions.Clear(); 

and eliminate the loop.

like image 32
Kendall Frey Avatar answered Sep 18 '22 17:09

Kendall Frey