Как получить все контакты в соответствии с набором фильтров в People Hub? - PullRequest
1 голос
/ 25 марта 2012

В моем People Hub установлено 4 учетных записи ( Windows Live Id, LinkedIn, Twitter и Facebook ).Я снял флажок в « People Hub \ filter мой список контактов » twitter и facebook , поэтому теперь я не вижу их в своей адресной книге - хорошо.Но когда я пытаюсь получить их в коде:

var contacts = new Microsoft.Phone.UserData.Contacts();
contacts.SearchCompleted += (s, e) => ...
contacts.SearchAsync(String.Empty, FilterKind.None, null);

, я получаю все свои учетные записи, включая Twitter и Facebook - Как я могу предотвратитьЭто?Я нашел свойство contacts.Accounts, но оно возвращает {Windows Live Id, Facebook}

1 Ответ

2 голосов
/ 25 марта 2012

Каждый из возвращенных контактов также имеет свойство Учетные записи

http://msdn.microsoft.com/en-us/library/microsoft.phone.userdata.contact.accounts(v=vs.92).aspx

Вы можете отфильтровать свой результат, используя

contacts.SearchCompleted += (s,e) => e.Results.Where(c=>MyFilter(c.Accounts))

Помните, что некоторые контакты могутбыть слияния информации из нескольких учетных записей.

var allAccounts = Contacts.Accounts;
var interestingAccounts = allAccounts.Where(x=>x.Name!="Twitter") // or x.Kind
bool Myfilter(IEnumerable<Account> accounts)
{
  return accounts.Intersect(interestingAccounts).Any();
}

РЕДАКТИРОВАТЬ:

bool Myfilter(IEnumerable<Account> accounts)
{
  return accounts.Intersect(Contacts.Accounts).Any();
}
...