Поиск по всем полям сущности
я пытаюсь реализовать "омнибокс»-тип поиска по базе данных клиентов, где один запрос должен пытаться соответствовать любым свойствам клиента.
Вот'некоторые примеры данных, чтобы проиллюстрировать, что яЯ пытаюсь достичь:
FirstName | LastName | PhoneNumber | ZipCode | ...
--------------------------------------------------
Mary | Jane | 12345 | 98765 | ...
Jane | Fonda | 54321 | 66666 | ...
Billy | Kid | 23455 | 12345 | ...
Если запрос был"Jane"
Яя ожидал, что строка # 1 будет возвращена так же, как строка # 2.Запрос для12345
даст строки № 1 и № 3.Прямо сейчас мой код выглядит примерно так:
IEnumerable searchResult = context.Customer.Where(
c => c.FirstName == query ||
c.LastName == query ||
c.PhoneNumber == query ||
c.ZipCode == query
// and so forth. Fugly, huh?
);
Это очевидно работает. Для меня это пахнет очень плохой практикой, поскольку любое изменение в сущности (удаление свойств, введение новых свойств) может привести к поломке.
Итак: есть ли какой-нибудь LINQ-foo, который будет искать по всем свойствам любого объекта, который я выбрасываю?