Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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# 优化CSOM加载时间以从SharePoint树获取所有文件_C#_Sharepoint_Csom - Fatal编程技术网

C# 优化CSOM加载时间以从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 =

所以我尝试实现一个函数,从SharePoint树中获取每个文件。除了加载时间外,该函数工作正常

这就是我所做的

    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代码的文章,供您参考:

主要思想:

  • 只要求你想要的(但一次就要求你想要的一切!)
  • 谨慎地调用ExecuteQuery
  • 高级:并行和异步代码
  • 在会话中缓存数据