Гемант, я думаю, что ваше критическое утверждение звучит так: «Мне нужно далее отфильтровать данные из данных в соответствии с пользовательскими фильтрами выбора». Первоначальный выбор данных, очевидно, должен исходить от вашего бизнес-уровня, чтобы: A) изолировать базу данных от пользовательского интерфейса и B) для реализации каких-либо бизнес-специфических правил для «подготовки» данных перед их доставкой в пользовательский интерфейс.
Учитывая, что вы просто выбираете подмножества, основанные на взаимодействиях с пользователем, я думаю, что вполне логично поместить логику в пользовательский интерфейс. Действительно, это вполне может быть условием only , когда имеет смысл выполнять ориентированные на данные операции в пользовательском интерфейсе.
С учетом вышесказанного, я реализовал пользовательскую фильтрацию в специализированном классе в моем уровне бизнес-логики. Это разумно для меня, потому что вся пользовательская фильтрация имеет довольно специфическую направленность (она не распространяется на всю базу данных).
Итак, вот ваш выбор. Если вы действительно просто реализуете пользовательские фильтры, и на разных страницах фильтры различного типа основаны на данных, которые они показывают, то у вас есть разумный аргумент для размещения логики фильтрации (только) на уровне пользовательского интерфейса. В конце концов, вы реализуете код взаимодействия с пользовательским интерфейсом! Однако, если существует простой способ инкапсулировать диапазон фильтров, которые ваши пользователи могут запрашивать в отдельном классе, который используют все страницы, я бы рекомендовал поместить этот класс в ваш уровень бизнес-логики.