Wednesday, 14 September 2016

Bulk delete SharePoint list items: CSOM


Call this method recursively:

public static void deleteExistingItemFromDestination(string listName)
        {
            try
            {
                ClientContext context = new ClientContext("https://domain.com/sites/siteColl/siteName/");
                string decryptedPwd = "password";
                foreach (char c in decryptedPwd)
                {
                    securePassword.AppendChar(c);
                }
                context.Credentials = new NetworkCredential("user", decryptedPwd, "Domain");
                Web web = context.Web;
                context.Load(web);

                List list = web.Lists.GetByTitle(listName);
                context.Load(list);
                context.ExecuteQuery();
                CamlQuery camlQuery = new CamlQuery();
                camlQuery.ViewXml = "@<View Scope='RecursiveAll'>"
                                        + "<Query>"
                                            + "<OrderBy><FieldRef Name='ID' Ascending='TRUE'/></OrderBy>"
                                        + "</Query>"
                                        + "<RowLimit Paged='TRUE'>5000</RowLimit>"
                                    + "</View>";
                ListItemCollection lstcoll = list.GetItems(camlQuery);
                Console.WriteLine("Starting at: "+System.DateTime.Now.ToShortTimeString());
                context.Load(lstcoll);
                context.ExecuteQuery();
                Console.WriteLine("\r\n\r\nDeleting...");
                foreach (ListItem eitem in lstcoll)
                {
                    ListItem item = list.GetItemById(Convert.ToInt32(eitem["ID"]));
                    item.DeleteObject();
                    context.ExecuteQuery();
                }
                Console.WriteLine("Completed at: " + System.DateTime.Now.ToShortTimeString());
             
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.Read();
            }
        } 

No comments:

Post a Comment