Pesquisa em todos os campos de uma entidade

Estou tentando implementar uma pesquisa do tipo "omnibox" em um banco de dados do cliente em que uma única consulta deve tentar corresponder a qualquer propriedade de um cliente.

Veja alguns dados de exemplo para ilustrar o que estou tentando alcançar:

FirstName  | LastName  | PhoneNumber | ZipCode | ...
--------------------------------------------------
Mary       | Jane      | 12345       | 98765   | ...
Jane       | Fonda     | 54321       | 66666   | ...
Billy      | Kid       | 23455       | 12345   | ...
Se a consulta foi"Jane"Espero que a linha 1 seja retornada, assim como a linha 2.Uma consulta para12345 produziria as linhas # 1 e # 3.

No momento, meu código se parece muito com isso:

IEnumerable<Customer> searchResult = context.Customer.Where(
    c => c.FirstName   == query ||
         c.LastName    == query ||
         c.PhoneNumber == query ||
         c.ZipCode     == query
         // and so forth. Fugly, huh?
);

Isso obviamente funciona. Cheira a uma prática muito ruim para mim, já que qualquer alteração na Entidade (remoção de propriedades, introdução de novas propriedades) quebraria as coisas.

Então, existe algum LINQ-foo que irá procurar em todas as propriedades de qualquer entidade que eu lance nele?

questionAnswers(1)

yourAnswerToTheQuestion