2016-06-08 54 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