按 phone 号码搜索联系人,使用 3 位前缀过滤
search contacts by phone number, filter using a 3 digit prefix
我想获取联系人中所有以特定 3 位数字开头的 phone 号码,例如,当我按下按钮时显示“012”。
我一直在使用以下代码对其进行处理:
private void ButtonContacts_Click(object sender, RoutedEventArgs e)
{
Contacts cons = new Contacts();
//Identify the method that runs after the asynchronous search completes.
cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);
//Start the asynchronous search.
cons.SearchAsync("0109", FilterKind.PhoneNumber, "State String 5");
}
void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
try
{
//Bind the results to the user interface.
ContactResultsData.DataContext = e.Results;
}
catch (System.Exception)
{
//No results
}
if (ContactResultsData.Items.Any())
{
ContactResultsLabel.Text = "results";
}
else
{
ContactResultsLabel.Text = "no results";
}
}
但 FilterKind.PhoneNumber
仅在至少匹配 phone 号码的最后 6 位数字时才有效。
知道如何实现吗?
顺便说一句,我完全是个初学者。
正如您所说,联系人 api 的过滤器仅在最后六位数字相同时才匹配,您可以在 documentation 中看到它,所以您不能使用它。
我认为最好的方法是接收所有联系人列表,然后使用 LINQ 查找您想要的联系人。
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
var contacts = new Contacts();
contacts.SearchCompleted += Contacts_SearchCompleted;
contacts.SearchAsync(null, FilterKind.None, null);
}
void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
var results = e.Results.ToArray();
var myContacts = results.Where(c => c.PhoneNumbers.Any(p => p.PhoneNumber.StartsWith("66"))).ToArray();
}
您可以在最后一行看到用于查找某些号码以 66 开头的联系人的查询。您可以根据需要更改此查询以匹配您想要的号码。
我想获取联系人中所有以特定 3 位数字开头的 phone 号码,例如,当我按下按钮时显示“012”。
我一直在使用以下代码对其进行处理:
private void ButtonContacts_Click(object sender, RoutedEventArgs e)
{
Contacts cons = new Contacts();
//Identify the method that runs after the asynchronous search completes.
cons.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(Contacts_SearchCompleted);
//Start the asynchronous search.
cons.SearchAsync("0109", FilterKind.PhoneNumber, "State String 5");
}
void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
try
{
//Bind the results to the user interface.
ContactResultsData.DataContext = e.Results;
}
catch (System.Exception)
{
//No results
}
if (ContactResultsData.Items.Any())
{
ContactResultsLabel.Text = "results";
}
else
{
ContactResultsLabel.Text = "no results";
}
}
但 FilterKind.PhoneNumber
仅在至少匹配 phone 号码的最后 6 位数字时才有效。
知道如何实现吗?
顺便说一句,我完全是个初学者。
正如您所说,联系人 api 的过滤器仅在最后六位数字相同时才匹配,您可以在 documentation 中看到它,所以您不能使用它。
我认为最好的方法是接收所有联系人列表,然后使用 LINQ 查找您想要的联系人。
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
var contacts = new Contacts();
contacts.SearchCompleted += Contacts_SearchCompleted;
contacts.SearchAsync(null, FilterKind.None, null);
}
void Contacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{
var results = e.Results.ToArray();
var myContacts = results.Where(c => c.PhoneNumbers.Any(p => p.PhoneNumber.StartsWith("66"))).ToArray();
}
您可以在最后一行看到用于查找某些号码以 66 开头的联系人的查询。您可以根据需要更改此查询以匹配您想要的号码。