我正在尝试从SharePoint库中获取所有文件夹和文件,执行单个请求。
CamlQuery query = new CamlQuery();
query.ViewXml = "<View Scope='RecursiveAll' />";
var libraryName = "Specific Documents";
ListItemCollection itemsRaw = clientContext.Web.Lists.GetByTitle(libraryName).GetItems(query);
clientContext.Load(itemsRaw);
clientContext.ExecuteQuery();
此代码运行良好,因此我在指定库中有一个所有文件夹和文件的列表。
似乎文件详细信息是以惰性方式加载的。仅来自详细信息层次结构的第一级。但我不知道如何,FieldValues集合充满了数据。
我看到ListItem ContentType.Name
没有初始化。
是否有可能以某种方式更新查询,该方式将在此单个调用中加载ContentType的数据。
或者唯一的可能性是遍历所有文件并为特定文件加载 ContentType ?
我通过以下方式做到了这一点:
foreach(var listItem in listItemCollection)
{
context.Load(listItem, k => k.ContentType);
context.ExecuteQuery();
var contentTypeName = listItem.ContentType.Name;
}
但如果可能的话,我将在一次调用中获取此信息,而无需在集合中迭代并启动对ClientContext的多次调用。
PS:我是SharePoint编程新手。我只是想修复一个错误。
谢谢!