2016-12-03 1 views
0

Я хочу, чтобы получить пользователя по его идентификатору в SharePoint 2013 с помощью CSOM C#:User.Groups пуст при попытке перечислить в SharePoint CSOM C#

 clientContext ctx = new ClientContext(siteUrl); 
     Web web = clientContext.Web; 
     User gUser = web.GetUserById(selectedUserId); 
     clientContext.Load(web); 
     clientContext.Load(gUser); 
     clientContext.ExecuteQuery(); 

       foreach (Group gGroup in gUser.Groups) 
       { 
        ... 
       } 

Но я получаю всегда следующее сообщение об ошибке:

Коллекция не была инициализирована. Он не был запрошен или запрос не был выполнен. Возможно, это должно быть явно запрошено .

Что я хочу сделать, это:

  • получить пользователя от SharePoint его идентификатор пользователя
  • петлю через user.groups (получить группы пользователей)

Я googling вокруг с сегодняшнего утра, но не может найти какое-либо решение/описание, как это решить.

+0

Что такое clientContext? – CodingYoshi

+0

'clientContext ctx = new ClientContext (siteUrl); – STORM

ответ

1

Это похоже на проблему EF eager vs lazy loading. В SP по умолчанию загружаются только простые свойства объектов (строка, дата, число, логическое значение). Другие свойства должны быть явно загружены. Чтобы сделать это, вам нужно сделать, это:

clientContext.Load(gUser.Groups); 

Это загрузит Groups коллекции, а также. Теперь вы можете получить к нему доступ.

Смежные вопросы