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

问题描述:

我使用SharePoint 2013客户端上下文将事件接收器代码转换为远程事件接收器。我需要得到具有唯一权限列表项数来验证,同时创造在某些网站集使用客户端上下文(CSOM)从SharePoint 2013中获取GetItemsWithUniquePermissions的最佳方法是什么?

它使用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, col => col.Include(i => i.HasUniqueRoleAssignments)); 
ctx.ExecuteQuery(); 
int itemCount = items.Where(i => i.HasUniqueRoleAssignments).Count; 

试试这个

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

太感谢你了,这是响应结果好于我的代码,但没有解决我的问题。 – kalimuthu