Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 使用客户端上下文和CAML查询删除sharepoint列表中的所有行_C# 4.0_Sharepoint_Sharepoint 2010_Sharepoint List_Sharepoint Clientobject - Fatal编程技术网

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

C# 4.0 使用客户端上下文和CAML查询删除sharepoint列表中的所有行,c#-4.0,sharepoint,sharepoint-2010,sharepoint-list,sharepoint-clientobject,C# 4.0,Sharepoint,Sharepoint 2010,Sharepoint List,Sharepoint Clientobject,我是SharePoint新手,希望使用C#ClientContext类和CAML查询删除SharePoint列表中的所有行 我怎样才能有效地实现它?我解决了它。我们学到的是,我们需要以相反的顺序删除列表中的项目 链接: 另一个解决方法: -在新列表上创建一个项目(称为deleteAllItems)(称为配置) 使用CAML将deleteAllItems值从False更改为True 然后,使用工作流 如果deleteAllItems==True,则删除所有项 将deleteAllItems重置为

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


我怎样才能有效地实现它?

我解决了它。我们学到的是,我们需要以相反的顺序删除列表中的项目

链接

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

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

  • 然后,使用工作流

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

    将deleteAllItems重置为False


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

就效率而言,最好将ExecuteQuery()语句移到循环外部。如果将ExecuteQuery移到循环外部,并且将多个删除作为“一次执行”发送,则Sharepoint可能会遇到异常,认为您的请求太大(发生在我身上的是几千次删除)。请看,我同意@n00b,但为了减少网络开销,我会添加
if(计数器%100==0){clientContext.ExecuteQuery();}
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");
    }
}