Buscar en todos los campos de una entidad

Estoy intentando implementar una búsqueda de tipo "omnibox" en una base de datos de clientes en la que una sola consulta debería intentar coincidir con las propiedades de un cliente.

Aquí hay algunos datos de muestra para ilustrar lo que estoy tratando de lograr:

FirstName  | LastName  | PhoneNumber | ZipCode | ...
--------------------------------------------------
Mary       | Jane      | 12345       | 98765   | ...
Jane       | Fonda     | 54321       | 66666   | ...
Billy      | Kid       | 23455       | 12345   | ...
Si la consulta fuera"Jane", Espero que la fila # 1 sea devuelta así como la fila # 2.Una consulta para12345 produciría las filas # 1 y # 3.

En este momento, mi código se parece mucho a esto:

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

Esto obviamente funciona. Sin embargo, me huele a una mala práctica, ya que cualquier cambio en la Entidad (eliminación de propiedades, introducción de nuevas propiedades) rompería las cosas.

Entonces, ¿hay algún LINQ-foo que buscará en todas las propiedades de la Entidad que le ofrezco?

Respuestas a la pregunta(1)

Su respuesta a la pregunta