Вы можете создать пакетную строку для удаления всех элементов из списка SharePoint следующим образом:
1: //create new StringBuilder
2: StringBuilder batchString= new StringBuilder();
3:
4: //add the main text to the stringbuilder
5: batchString.Append("");
6:
7: //add each item to the batch string and give it a command Delete
8: foreach (SPListItem item in itemCollection)
9: {
10: //create a new method section
11: batchString.Append("");
12: //insert the listid to know where to delete from
13: batchString.Append("" + Convert.ToString(item.ParentList.ID) + "");
14: //the item to delete
15: batchString.Append("" + Convert.ToString(item.ID) + "");
16: //set the action you would like to preform
17: batchString.Append("Delete");
18: //close the method section
19: batchString.Append("");
20: }
21:
22: //close the batch section
23: batchString.Append("");
24:
25: //preform the batch
26: SPContext.Current.Web.ProcessBatchData(batchString.ToString());
Единственный недостаток, который я могу вспомнить, это то, что все элементы, которые вы удаляете, будутположить в корзину.Как я могу предотвратить это?
Я также нашел решение, как показано ниже:
// web is a the SPWeb object your lists belong to
// Before starting your deletion
web.Site.WebApplication.RecycleBinEnabled = false;
// When your are finished re-enable it
web.Site.WebApplication.RecycleBinEnabled = true;
Ref [Here](http://www.entwicklungsgedanken.de/2008/04/02/how-to-speed-up-the-deletion-of-large-amounts-of-list-items-within-sharepoint/)
Но недостатком этого решения является то, что только будущие удаления будут отправляться не в корзины, а наудалит также все существующие элементы, которые пользователь не хочет.Любая идея, чтобы предотвратить не удалять существующие элементы?
Большое спасибо заранее,
TQT