如何根据People Hub中设置的过滤器接收所有联系人?

时间:2012-03-25 09:33:07

标签: c# windows-phone-7 contacts

我的人员中心设置了4个帐户( Windows Live ID,LinkedIn,Twitter Facebook )。我在“ People Hub \过滤我的联系人列表 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 个答案:

答案 0 :(得分:2)

返回的每个联系人也都有一个帐户属性

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