我需要从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();
问题是有很多系统库返回文件,如“controls”,“edit-mode-21”等。我不想按特定名称过滤掉它们,因为在其他SP站点上可能还有其他名称。
如果它是用户创建的列表(意思是我需要的文档)或者只是一个sys,我怎么能从List
及其属性中知道。库中?
由于
答案 0 :(得分:7)
您可以尝试一些条件。您需要检查并选择适合您情况的组合:
Hidden == false
- 应排除大部分SharePoint内部(Master Page Gallery
,Solution Gallery
和其他内容)。IsSiteAssetsLibrary == false
- 这将排除Site Assets
和Site Collection Images
。但也可以排除用户创建的其他图像库。IsCatalog == false
- 大多数目录也被隐藏,但Style Library
除外。BaseTemplate == 101
- 这是DocumentLibrary的模板。这将排除目录,图像库,页面库以及其他一些。答案 1 :(得分:-1)
您还可以排除使用IsSystemList == false和AllowDeletion == true进行过滤的基于系统的列表和文档库。