Sharepoint CSOM - 如何筛选出 system/default 个文档库?
Sharepoint CSOM - how to filter out system/default document libraries?
我需要从 Sharepoint 站点获取所有文档。我从获取所有文档库开始:
private IEnumerable<List> GetAllDocumentLibraries(ClientContext context)
{
var lists = context.LoadQuery(context.Web.Lists.Where(list => list.BaseType == BaseType.DocumentLibrary));
context.ExecuteQuery();
return lists;
}
然后从每个中获取所有项目..
var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
_context.Load(items, i => i.Include(it => it.DisplayName, it => it.File));
_context.ExecuteQuery();
问题是有很多 return 文件的系统库,例如 "controls"、"edit-mode-21" 和类似的。我不想通过特定名称过滤掉它们,因为在其他 SP 站点上可能还有其他名称。
我如何从 List
及其属性中知道它是用户创建的列表(意味着包含我需要的文档)还是只是一个 sys.图书馆?
谢谢
您可以尝试几个条件。您需要检查 select 适合您情况的组合:
Hidden == false
- 应该排除大部分 SharePoint 内部(Master Page Gallery
、Solution Gallery
和其他)。
IsSiteAssetsLibrary == false
- 这将排除 Site Assets
和 Site Collection Images
。但也可以排除用户创建的其他图片库。
IsCatalog == false
- 大多数目录也被隐藏,Style Library
. 除外
BaseTemplate == 101
- 这是 DocumentLibrary 的模板。这将排除目录、图像库、页面库和其他一些可能。
您还可以使用 IsSystemList == false 以及 AllowDeletion == true 排除基于系统的列表和文档库过滤。
我需要从 Sharepoint 站点获取所有文档。我从获取所有文档库开始:
private IEnumerable<List> GetAllDocumentLibraries(ClientContext context)
{
var lists = context.LoadQuery(context.Web.Lists.Where(list => list.BaseType == BaseType.DocumentLibrary));
context.ExecuteQuery();
return lists;
}
然后从每个中获取所有项目..
var items = list.GetItems(CamlQuery.CreateAllItemsQuery());
_context.Load(items, i => i.Include(it => it.DisplayName, it => it.File));
_context.ExecuteQuery();
问题是有很多 return 文件的系统库,例如 "controls"、"edit-mode-21" 和类似的。我不想通过特定名称过滤掉它们,因为在其他 SP 站点上可能还有其他名称。
我如何从 List
及其属性中知道它是用户创建的列表(意味着包含我需要的文档)还是只是一个 sys.图书馆?
谢谢
您可以尝试几个条件。您需要检查 select 适合您情况的组合:
Hidden == false
- 应该排除大部分 SharePoint 内部(Master Page Gallery
、Solution Gallery
和其他)。IsSiteAssetsLibrary == false
- 这将排除Site Assets
和Site Collection Images
。但也可以排除用户创建的其他图片库。IsCatalog == false
- 大多数目录也被隐藏,Style Library
. 除外
BaseTemplate == 101
- 这是 DocumentLibrary 的模板。这将排除目录、图像库、页面库和其他一些可能。
您还可以使用 IsSystemList == false 以及 AllowDeletion == true 排除基于系统的列表和文档库过滤。