C# 优化CSOM加载时间以从SharePoint树获取所有文件
所以我尝试实现一个函数,从SharePoint树中获取每个文件。除了加载时间外,该函数工作正常 这就是我所做的C# 优化CSOM加载时间以从SharePoint树获取所有文件,c#,sharepoint,csom,C#,Sharepoint,Csom,所以我尝试实现一个函数,从SharePoint树中获取每个文件。除了加载时间外,该函数工作正常 这就是我所做的 private List<ListItem> GetAllItems(ClientContext Context, List list, List<ListItem> ListItems, CamlQuery camlQuery) { camlQuery.ViewXml =
private List<ListItem> GetAllItems(ClientContext Context, List list, List<ListItem> ListItems, CamlQuery camlQuery)
{
camlQuery.ViewXml =
@"< View Scope = 'RecursiveAll'>
< Query >
<Where>
</Where>
</ Query >
</ View >";
ListItemCollection AllItems = list.GetItems(camlQuery);
Context.Load(AllItems);
Context.ExecuteQuery();
foreach (ListItem item in AllItems)
{
if (item.FileSystemObjectType == FileSystemObjectType.File)
{
if (!ListItems.Contains(item))
ListItems.Add(item);
}
if (item.FileSystemObjectType == FileSystemObjectType.Folder)
{
camlQuery.FolderServerRelativeUrl = item.FieldValues["FileRef"].ToString();
GetAllItems(Context, list, ListItems, camlQuery);
}
}
return ListItems;
}
私有列表GetAllItems(ClientContext上下文、列表列表、列表项、CamlQuery CamlQuery)
{
camlQuery.ViewXml=
@“
";
ListItemCollection AllItems=list.GetItems(camlQuery);
加载(AllItems);
Context.ExecuteQuery();
foreach(所有项目中的列表项)
{
if(item.FileSystemObjectType==FileSystemObjectType.File)
{
如果(!ListItems.Contains(项))
列表项。添加(项);
}
if(item.FileSystemObjectType==FileSystemObjectType.Folder)
{
camlQuery.FolderServerRelativeUrl=item.FieldValues[“FileRef”].ToString();
GetAllItems(上下文、列表、列表项、camlQuery);
}
}
返回列表项;
}
问题是Context.ExecuteQuery()
加载每个查询需要0,3-1秒,对于一个有1424个文件夹的树,加载需要4分钟以上,如果文件夹数量变大,则加载时间过长
因此,我想问,是否有可能减少此文件的加载时间,或者是否有更优化的方法从SharePoint树获取每个文件?这是一篇关于优化CSOM代码的文章,供您参考: 主要思想: