I'm working on an app which is a dialer and I want to search contacts when user presses keys. I want to search contacts which match phone number as well as name of contact. I've implemented method to search contact based on phone number, when user presses key, it'll search the number similar to the keys pressed.

My code is:

```
List<string> a = new List<string>();
var alphabet = "abc";
var al2 = "def";

var q = alphabet.Select(x => x.ToString());
int size = 3;
for (int i = 0; i < size - 1; i++)
    q = q.SelectMany(x => al2, (x, y) => x + y);

foreach (var item in q)
    a.Add(item);

SearchListbox.ItemsSource = listobj
    .FindAll(x => x.Phone.Contains(str) || 
        x.FirstName.Contains(a.Any().ToString()));

```

It works perfectly for number search but not for name search. 

I want to search contacts which match letter combinations when user presses keys. How do I do that? I'm building an app for windows phone so it must be in c#.