Как получить адрес электронной почты из поля PeoplePicker с использованием C # и клиентской объектной модели

Я использую CAML для получения некоторых элементов списка sharepoint. Один из столбцов - это элемент управления PeoplePicker. Как я могу извлечь адрес электронной почты из этого столбца?

Я знаю, как получить LookupValue и LookupID, но не адрес электронной почты.

FieldUserValue usvSM1 = i["Account"] as FieldUserValue;
Console.WriteLine(usvSM1.LookupValue);

Имейте в виду, что я программирую с использованием клиентской объектной модели.

Большое спасибо!


person Ashton    schedule 06.02.2014    source источник


Ответы (2)


Попробуй это:

var user = web.SiteUsers.GetById(usvSM1.LookupId);

context.Load(user);
context.ExecuteQuery();

Console.WriteLine(user.Email);

РЕДАКТИРОВАТЬ: свойство Web.SiteUsers доступно только для клиентской объектной модели SharePoint 2013.

Второй способ - получить пользователя:

var user = web.EnsureUser(usvSM1.LookupValue);

context.Load(user);
context.ExecuteQuery();

Console.WriteLine(user.Email);
person Yevgeniy.Chernobrivets    schedule 06.02.2014
comment
Спасибо Евгению - я думаю, что SiteUsers нельзя использовать с клиентской объектной моделью. [ссылка] msdn.microsoft.com/en-us / library / - person Ashton; 07.02.2014
comment
Хм, какую версию SharePoint вы используете? Похоже, что SharePoint 2013 имеет это свойство, а SharePoint 2010 - нет. Отметьте здесь msdn.microsoft .com / ru-ru / library / - person Yevgeniy.Chernobrivets; 07.02.2014
comment
Классная вещь! :) Это прекрасно работает. Я думаю, что моя организация обновится до SP2013 где-то в этом году - не только сейчас. Спасибо Евгению !! :) - person Ashton; 07.02.2014
comment
привет @ Евгений.Чернобривец, а что, если отображаемое имя двух сотрудников останется прежним? например: john smith и john, smith, но в их электронной почте есть [email protected] и [email protected], поэтому возникнет конфликт при идентификации человека / адреса электронной почты с помощью sharepoint? как справиться с этой ситуацией - person userAZLogicApps; 30.05.2019

person    schedule
comment
вот как получить отображаемое имя и обрезанное имя для входа? user.Title выдает ошибку. - person userAZLogicApps; 30.05.2019