3

Я хочу получить все телефонные номера в моих контактах, которые начинаются с трехзначных цифр, например «012», когда я нажимаю кнопку.поиск контактов по номеру телефона, фильтр с использованием 3-значного префикса

Я работал на нем, используя следующий код:

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 работает только тогда, когда она имеет по крайней мере последние 6 цифр совпавших номеров телефона.
Любая идея, как этого достичь?
BTW Я - новичок.

ответ

1

Как вы говорите, фильтр контактов 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. Вы можете изменить этот запрос, как вы хотите, чтобы соответствовать номера, которые вы хотите.