使用客户端上下文 (CSOM) 从 SharePoint 2013 获取 GetItemsWithUniquePermissions 计数的最佳方法是什么?

What is best method to get GetItemsWithUniquePermissions count from SharePoint 2013 using client context (CSOM)?

我正在使用 SharePoint 2013 客户端上下文将事件接收器代码转换为远程事件接收器。在某些网站集中创建新文档时,我需要获取具有唯一权限计数的列表项以进行验证

可以使用 SharePoint 对象模型

SP.List.GetItemsWithUniquePermissions().Count()

我编写了以下逻辑来获取 CSOM 中具有唯一权限计数的列表项,但它抛出了超时异常

var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
            ctx.Load(items, icol => icol.Include(i => i.RoleAssignments.Include(ra => ra.Member), i => i.DisplayName));
            ctx.ExecuteQuery();
            List<string> uniqitem = new List<string>();
            foreach (var item in items)
            {
                foreach (var assignment in item.RoleAssignments)
                {
                    uniqitem.Add(assignment.Member.Title);
                }
            }
            int itemCount = uniqitem.Distinct().Count();

能否请您建议我在 CSOM 中使用正确的方法?提前致谢

试试这个

var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items, icol => icol.Where(i => i.HasUniqueRoleAssignments == true));
ctx.ExecuteQuery();
int itemCount = items.Count;

谢谢,现在速度稍微快了点

var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
ctx.Load(items, col => col.Include(i => i.HasUniqueRoleAssignments));
ctx.ExecuteQuery();
int itemCount = items.Where(i => i.HasUniqueRoleAssignments).Count;