使用客户端上下文和CAML查询删除sharepoint列表中的所有行

时间:2013-04-15 11:30:49

标签: c#-4.0 sharepoint sharepoint-2010 sharepoint-list sharepoint-clientobject

我是SharePoint新手,希望使用C# ClientContext 类和 CAML查询删除SharePoint列表中的所有行。

我如何有效地实现它?

2 个答案:

答案 0 :(得分:15)

我解决了。学习是我们需要以相反的顺序删除列表项。

链接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");
    }
}

答案 1 :(得分:0)

另一种解决方法: - 在新列表上创建一个项目(表示:deleteAllItems)(表示:配置)。

  • 使用CAML将deleteAllItems值从False更改为True。

  • 然后,使用工作流程,

    如果deleteAllItems == True,则删除所有项目。

    将deleteAllItems重置为False。

解决客户端性能问题。 :)