Как включить Project FieldValues ​​в запрос CSOM

Я пытаюсь извлечь всю информацию о проектах из SharePoint с помощью клиентской модели объекта (CSOM). Вот как я получаю информацию о проектах:

projectContext.Load(projectContext.Projects,
    c =>
        c.Where(p => p.Id == new Guid(id))
            .IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
                f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description));

projectContext.Load(projectContext.LookupTables, c => c.Include(f => f.Id, f => f.Entries));
projectContext.Load(projectContext.Web.SiteUsers);
projectContext.ExecuteQuery();

Однако мне также нужно получить свойство FieldValues ​​из этих проектов, и я не могу понять, как включить его в тот же запрос. Я нашел, как это сделать на уровне проекта после того, как я получил проекты из вышеприведенного кода, например:

var pubProject = project.IncludeCustomFields;
projectContext.Load(pubProject);
projectContext.Load(pubProject.CustomFields);

projectContext.ExecuteQuery();

var fieldValues = pubProject.FieldValues;

Теперь pubProject будет содержать информацию FieldValues, но использование этого подхода для всех проектов становится слишком медленным (для совершения вызова в SharePoint требуется 1 - 4 секунды), так как мне нужно сделать дополнительный запрос для каждого проекта и передовой практикой для CSOM должен сделать как можно меньше вызовов.

Если я включаю FieldValues ​​в поля include, например:

projectContext.Load(projectContext.Projects,
    c =>
        c.Where(p => p.Id == new Guid(id))
            .IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
                f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description, f => f.FieldValues));

Я получаю следующую ошибку:

Выражение запроса 'f.FieldValues' не поддерживается.

Ответ 1

Я думаю, вам нужно поставить f => f.CustomFields в ваш оператор .IncludeWithDefaultProperties вместо f.FieldValues - Загрузка CustomFields должна вызывать FieldValues для заполнения