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

Fil*_*lip 2 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;
}
Run Code Online (Sandbox Code Playgroud)

然后从每个项目中获取所有项目..

var items = list.GetItems(CamlQuery.CreateAllItemsQuery());

_context.Load(items, i => i.Include(it => it.DisplayName, it => it.File));

_context.ExecuteQuery();
Run Code Online (Sandbox Code Playgroud)

问题是有很多系统库返回文件,如"controls","edit-mode-21"等.我不想按特定名称过滤掉它们,因为在其他SP站点上可能还有其他名称.

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

谢谢

dst*_*ski 9

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

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