2012-05-07 4 views
2

С помощью этого кода я получаю расширенные свойства для контактов с определенным именем дисплея:фильтра расширенных свойств по контактному идентификатору

foreach(Contact c in contacts) 
{ 
    // some code... 
    view.PropertySet = new PropertySet(BasePropertySet.IdOnly, properties); 
    filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, c.DisplayName); 
    items = service.FindItems(folderId, filter, view); 
} 

Я хочу, чтобы фильтровать не по DisplayName а по Contact.Id, но я не могу найти способ сделать это.

ответ

0

Вот что я сделал, в конце концов, я не нашел лучшего решения. Я получаю все контакты с тем же именем и прокручиваю их, чтобы найти правильный контакт.

 foreach (Item item in items.Items) 
     { 
      foreach (var ext in item.ExtendedProperties) 
      { 
       // check if the extended property is from this contact 
       if (c.Id.ChangeKey == item.Id.ChangeKey) 
       { 
        extendedProperties.Add(ext); 
       } 
      } 
     } 
0

Для поиска по Contact.Id использования ItemSchema.Id как приведено ниже ...

filter = new SearchFilter.IsEqualTo(ItemSchema.Id, c.Id); 
+0

Я пробовал, но он выдает исключение ArgumentException с сообщением «Ошибка проверки. Имя параметра: searchFilter" – Thiago