Sharepoint CSOM - 如何过滤掉系统/默认文档库?

时间:2016-06-08 14:04:50

标签: c# sharepoint csom

我需要从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及其属性中知道。库中?

由于

2 个答案:

答案 0 :(得分:7)

您可以尝试一些条件。您需要检查并选择适合您情况的组合:

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

答案 1 :(得分:-1)

您还可以排除使用IsSystemList == false和AllowDeletion == true进行过滤的基于系统的列表和文档库。