批量获取SharePoint列表c#CSOM
您能否帮助我使用CSOM获取SharePoint库(它是一个包含文档集的库)的项目。 该库有5000多个项目,我知道SharePoint有5000个项目的限制,所以我尝试将它们分为500个批次。可能吗批量获取SharePoint列表c#CSOM,c#,sharepoint,csom,C#,Sharepoint,Csom,您能否帮助我使用CSOM获取SharePoint库(它是一个包含文档集的库)的项目。 该库有5000多个项目,我知道SharePoint有5000个项目的限制,所以我尝试将它们分为500个批次。可能吗 clientContext.Credentials = new SharePointOnlineCredentials(username, securePassword); List oList = clientContext.Web.Lists.GetByTitle(libraryName);
clientContext.Credentials = new SharePointOnlineCredentials(username, securePassword);
List oList = clientContext.Web.Lists.GetByTitle(libraryName);
clientContext.Load(oList);
clientContext.ExecuteQuery();
CamlQuery query = new CamlQuery();
query.ViewXml = "<View><RowLimit>500</RowLimit></View>";
ListItemCollection allDocumentSet = oList.GetItems(query);
clientContext.Load(allDocumentSet);
clientContext.ExecuteQuery();
clientContext.Credentials=新的SharePointOnlineCredentials(用户名、安全密码);
List-oList=clientContext.Web.Lists.GetByTitle(libraryName);
clientContext.Load(oList);
clientContext.ExecuteQuery();
CamlQuery query=新建CamlQuery();
query.ViewXml=“500”;
ListItemCollection allDocumentSet=oList.GetItems(查询);
加载(allDocumentSet);
clientContext.ExecuteQuery();
我不知道为什么不工作。我得到以下错误
Microsoft.SharePoint.Client.ServerException:“尝试的操作被禁止,因为它超出了管理员强制执行的列表视图阈值。”
如果我每批只收到500个项目,为什么会出现错误
另外,还有一个问题。什么时候应该使用“ExecuteQuery”和加载函数
谢谢 您需要运行ExecuteQuery从服务器检索/更新数据 下面是我的示例测试代码,用于检索超过5000个项目
List lmsList = clientContext.Web.Lists.GetByTitle("LargeList");
ListItemCollectionPosition itemPosition = null;
while (true)
{
CamlQuery camlQuery = new CamlQuery();
camlQuery.ListItemCollectionPosition = itemPosition;
camlQuery.ViewXml = @"<View><RowLimit>500</RowLimit></View>";
ListItemCollection listItems = lmsList.GetItems(camlQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
itemPosition = listItems.ListItemCollectionPosition;
Console.WriteLine(itemPosition);
//foreach (ListItem listItem in listItems)
// Console.WriteLine("Item Title: {0}", listItem["Title"]);
if (itemPosition == null)
break;
Console.WriteLine(itemPosition.PagingInfo);
}
List-lmsList=clientContext.Web.Lists.GetByTitle(“LargeList”);
ListItemCollectionPosition itemPosition=null;
while(true)
{
CamlQuery CamlQuery=新的CamlQuery();
camlQuery.ListItemCollectionPosition=itemPosition;
camlQuery.ViewXml=@“500”;
ListItemCollection listItems=lmsList.GetItems(camlQuery);
加载(listItems);
clientContext.ExecuteQuery();
itemPosition=listItems.ListItemCollectionPosition;
控制台写入线(itemPosition);
//foreach(listItems中的ListItem ListItem)
//WriteLine(“项标题:{0}”,listItem[“Title”]);
if(itemPosition==null)
打破
控制台写入线(itemPosition.PaginInfo);
}
我看不出我的代码有什么不同(除了循环接下来的500项之外)。我在XML的开头添加了@,但仍然是相同的响应。Microsoft.SharePoint.Client.ServerException:“尝试的操作被禁止,因为它超过了管理员强制执行的列表视图阈值。”在clientContext.ExecuteQuery()行中;SharePoint库是否需要索引?或者它需要任何必备条件?请尝试根据ID进行筛选,因为默认情况下ID是索引的@"0500";