Контакты Lync организованы в группы, поэтому вам нужно начать на уровне групп. После того, как у вас есть группа, вы можете перечислять через ее контакты
foreach(var group in _client.ContactManager.Groups)
{
foreach (var contact in group)
{
MessageBox.Show(contact.Uri);
}
}
Эта статья хороша для фона и более продвинутых функций
Редактировать : В частности, для вопроса расширения групп рассылки, я думаю, образец здесь имеет недостатки.
Вместо вызова BeginExpand и ожидания в WaitHandle предоставьте метод обратного вызова для обработки обратного вызова Expand. Итак, вместо:
asyncOpResult = DGGroup.BeginExpand(null, null);
asyncOpResult.AsyncWaitHandle.WaitOne();
DGGroup.EndExpand(asyncOpResult);
попробуйте это:
...
asyncOpResult = DGGroup.BeginExpand(ExpandCallback, DGGroup);
...
public void ExpandCallback(IAsyncResult ar)
{
DistributionGroup DGGroup = (DistributionGroup)ar.AsyncState;
DGGroup.EndExpand(ar);
etc...
}
Это прекрасно работает для меня.