2016-06-08 50 views
1

我需要从Sharepoint网站获取所有文档。我开始让所有的文档库:Sharepoint CSOM - 如何过滤掉系统/默认文档库?

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(); 

问题是,有很多返回的文件,如“控制系统库“,”编辑模式-21“等。我不想用特定名称将它们过滤掉,因为在其他SP站点上可能有其他名称。

我怎么能从List及其属性,如果它是用户创建的列表(意思与我需要的文档)或只是一个sys。图书馆?

谢谢

回答

3

有几个条件,你可以尝试。你需要检查,并选择适合你的情况下,组合:

  • Hidden == false - 应该排除大多数的SharePoint内部(Master Page GallerySolution Gallery和其他)。
  • IsSiteAssetsLibrary == false - 这将排除Site AssetsSite Collection Images。但是也可以排除用户创建的其他图像库。
  • IsCatalog == false - 大多数目录也被隐藏,除了Style Library
  • BaseTemplate == 101 - 这是DocumentLibrary的模板。这将排除目录,图像库,页面库和其他可能的。
+0

谢谢,这3个属性帮助消除了几乎所有的“额外”文件,现在我只能处理一些.aspx文件。关于BaseTemplate,这是否也会排除用户创建的文档。使用默认模板的库? – Filip