Se avete la necessità di cancellare tutti gli elementi di una lista SharePoint vi accorgerete che i metodi tradizionali sono particolarmente lenti.


Grazie a questa domanda su un forum ho scoperto un metodo molto, ma molto più veloce.
Su una lista con 12000 elementi sono passato da 45 sec a meno di 1 sec...
Il codice è abbastanza semplice da capire:

        public void DeleteAllItems(SPWeb spWeb, string list)      
{ spWeb.AllowUnsafeUpdates = true; StringBuilder deletebuilder = BatchCommand(spWeb.Lists[list]); spWeb.ProcessBatchData(deletebuilder.ToString()); } private static StringBuilder BatchCommand(SPList spList) { StringBuilder deletebuilder = new StringBuilder(); deletebuilder.Append(""); string command = "" + spList.ID + "{0}Delete"; foreach (SPListItem item in spList.Items) { deletebuilder.Append(string.Format(command, item.ID.ToString())); } deletebuilder.Append(""); return deletebuilder; }
comments powered by Disqus