Szukaj na wszystkich polach podmiotu

Próbuję zaimplementować wyszukiwanie typu „omnibox” w bazie danych klientów, w którym pojedyncze zapytanie powinno próbować dopasować dowolne właściwości klienta.

Oto kilka przykładowych danych ilustrujących to, co próbuję osiągnąć:

FirstName  | LastName  | PhoneNumber | ZipCode | ...
--------------------------------------------------
Mary       | Jane      | 12345       | 98765   | ...
Jane       | Fonda     | 54321       | 66666   | ...
Billy      | Kid       | 23455       | 12345   | ...
Jeśli zapytanie było"Jane", Spodziewałbym się, że wiersz # 1 zostanie zwrócony, podobnie jak wiersz # 2.Zapytanie o12345 da wiersze # 1 i # 3.

W tej chwili mój kod wygląda prawie tak:

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

To oczywiście działa. Pachnie mnie jednak bardzo złą praktyką, ponieważ każda zmiana w Jednostce (usuwanie właściwości, wprowadzanie nowych właściwości) przerwie rzeczy.

Więc: czy jest jakiś LINQ-foo, który przeszuka wszystkie właściwości dowolnej Jednostki, którą na nią rzucę?

questionAnswers(1)

yourAnswerToTheQuestion