使用客户端上下文 (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;
我正在使用 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;