如何根据人员中心中设置的筛选器接收所有联系人

本文关键字:联系人 筛选 设置 何根 | 更新日期: 2023-09-27 18:29:06

我在我的人员中心中设置了4个帐户(Windows Live Id、LinkedIn、TwitterFacebook)。我已在"人民中心''筛选我的联系人列表"推特脸书帐户中取消选中,所以现在我在通讯簿中看不到它们-很好。但当我试图通过以下方式获得代码中的它们时:

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

我收到我的所有帐户,包括TwitterFacebook帐户-我该如何阻止它?我已找到属性contacts.Accounts,但它返回{Windows Live Id,Facebook}

如何根据人员中心中设置的筛选器接收所有联系人

返回的每个联系人也有一个Accounts属性

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();
}