Delete all rows in sharepoint list using Client Context and CAML Query
Asked Answered
I

2

11

I am new to SharePoint and want to delete all rows in a SharePoint list using C# ClientContext class and CAML Query.

How can i achieve it efficiently?

Inutility answered 15/4, 2013 at 11:30 Comment(0)
I
17

I solved it. The learning was that we need to delete the items of list in reverse order.

Link: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitemcollection.delete.aspx

ListItemCollection listItems = oList.GetItems(CamlQuery.CreateAllItemsQuery());
clientContext.Load(listItems,
                    eachItem => eachItem.Include(
                    item => item,
                    item => item["ID"]));
clientContext.ExecuteQuery();

var totalListItems = listItems.Count;
Console.WriteLine("Deletion in " + currentListName + "list:");
if (totalListItems > 0)
{
    for (var counter = totalListItems - 1; counter > -1; counter--)
    {
        listItems[counter].DeleteObject();
        clientContext.ExecuteQuery();
        Console.WriteLine("Row: " + counter + " Item Deleted");
    }
}
Inutility answered 16/4, 2013 at 13:20 Comment(3)
As far as efficiency goes you would probably be well served to move the ExecuteQuery() statement outside of the loop.Idonah
If you move the ExecuteQuery to the outside of the loop, and you have many deletes sent as 'one execution' you could potentially run into an exception where Sharepoint thinks your request is too big (it happened to me with a couple thousand deletes). See sharepoint.stackexchange.com/questions/44894/…Amorita
i Agree with @Amorita but in order to reduce network overhead I'd add if (counter % 100 == 0){ clientContext.ExecuteQuery(); }Vannessavanni
M
0

Another workaround: - Create a items (said: deleteAllItems), on a new list (said: configuration).

  • Use CAML to change that deleteAllItems value from False to True.

  • then, use workflow,

    if deleteAllItems == True, delete all items.

    reset deleteAllItems to False.

Solve the client side performance issue. :)

Misdeed answered 14/6, 2017 at 4:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.