如何针对用户权限优化caml查询

问题描述

我需要查询列表中的所有文件夹以及特定用户每个文件夹的用户权限。到目前为止,我有一个CamlQuery.CreateAllFoldersQuery,然后在循环中我查询每个文件夹的UserEffectivePermissions。这导致大量查询(并且性能较差)。我想知道是否可以在同一ExecuteQuery()中以某种方式用其UserEffectivePermissions查询所有文件夹吗?

到目前为止,这是我的代码:

                var items = list.GetItems(CamlQuery.CreateAllFoldersQuery());
                ctx.Load(items,icol => icol.Include(i => i.DisplayName,i=>i.Folder.ItemCount));
                ctx.ExecuteQuery();
                ClientResult<BasePermissions> p;
                foreach (var item in items)
                {
                        p = item.GetUserEffectivePermissions(currentUser.LoginName);
                        ctx.ExecuteQuery(); //<-- this extra call in the loop i want to get rid off
                        // add the permissions to the VFolderObject for client side handling
                        var fp = new FolderAndPermissions { VFolderId = item.DisplayName,ItemCount = item.Folder.ItemCount,Permissions = parsePermissions(p.Value,"ListItem") };
                        folders.Add(fp);
                }

edit:我将字段“ Folder.ItemCount”移至AllFolderQuery...。为我节省了几百毫秒;-) 查询仍然需要约8.8秒,尽管:-(

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)