Я пытаюсь получить все папки и файлы из библиотеки 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.
P.S.: я новичок в программировании SharePoint. Я просто хочу исправить ошибку.
Спасибо!