我的人员中心设置了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}
答案 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();
}