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