Sharepoint 客户端对象模型更新集合中的所有项目

Sharepoint Client Object Model update all items in collection

我有一些测试代码可以很好地更新集合中的所有项目,但我看到提示说在大多数情况下,作为最佳实践,您应该只调用一次 ExecuteQuery()。我不确定该怎么做,如果我删除第一个调用,代码会中断并出现集合未初始化错误。有没有办法将此代码更改为只有一个 ExecuteQuery?我的代码如下。谢谢

static void Main(string[] args)
    {
        ClientContext context = new ClientContext("my url to list");
        List list = context.Web.Lists.GetByTitle("list name");
        CamlQuery query = new CamlQuery();
        query.ViewXml="<View><Query><Where><IsNull><FieldRef Name='xfoc'/></IsNull></Where></Query></View>";
        ListItemCollection items = list.GetItems(query);
        context.Load(items);
        context.ExecuteQuery();

        for (int i = 0; i < items.Count; i++ )
        {
            items[i]["Title"] = "unprocessed record # " + i.ToString();
            items[i].Update();
        }

        context.ExecuteQuery();

        Console.ReadKey();



    }

代码看起来不错。我相信你误解了最佳实践。在您的示例中,您甚至无法首先从服务器获取项目集合而无法更新项目集合。所以第一个 ExecuteQuery() 是强制性的。

将 ExecuteQuery() 视为到服务器的往返以获取数据。它必须用在绝对需要的地方。

查看 this 文章中的最佳实践 4。