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ę?