Снова и снова я занимаюсь разработкой экранов бизнес-приложений WinForm, в которых есть несколько текстовых полей для критериев поиска, а затем кнопка поиска. Они отображаются в выражение с помощью Linq, а затем передаются на мой слой Linq2Sql.
Я хотел бы создать простой способ «привязать» эти текстовые поля к базовому запросу, используя различные параметры, такие как «contains», «setswith», «точный совпадение» и т. Д. ...
Я представляю себе что-то вроде этого (обратите внимание, что SearchBinderT воображаем):
SearchBinder<Customer> searchBinder = new SearchBinder<Customer>();
searchBinder.Bind(txtFirstName, a=>a.FirstName, SearchBinderOptions.StarsWith);
searchBinder.Bind(txtLastName, a=>a.LastName, SearchBinderOptions.StarsWith);
searchBinder.Bind(txtTelephone, a=>a.Phone, SearchBinderOptions.Equals);
searchBinder.SetAction(btnSearch, MyMethodThatHandlesTheExpressionTreeAndFillsTheResults);
Тогда щелчок поиска автоматически создаст дерево выражений , где текстовые поля не были пустыми , и выполнит поиск. Но это только один шаблон в моей голове - их гораздо больше. В основном я сосредоточен на быстрой разработке приложений.
- Какой шаблон (ы) дизайна вы бы использовали для этого (или я думаю, что это хорошо)?
- Как бы вы работали с другими типами данных (даты / числа с числом меньше или больше)