Фон: У меня огромная таблица с множеством столбцов и множеством записей в db. У меня есть некоторые запрограммированные запросы, которые возвращают данные, но мне нужно дать возможность пользователю уточнить запрос (добавить дополнительные фильтры).Linq-to-sql пользовательский предикат
Так что мой вопрос, у меня есть код следующим образом:
var dbquery = (from a in db.test where id > 100 select a);
Это возвращает IQueryable. Теперь я могу futher фильтровать (и до сих пор запустить запрос на дб), когда я это сделать
var dbquery2 = dbquery.Where(b => b.quanity > 20);
Но то, что я действительно хочу, чтобы пользователь, чтобы иметь возможность вводить фильтры и он по-прежнему работать на дБ. Я смотрю на PropertyDescriptors, но они всегда говорят, что нет никакого перевода linq на sql-перевод. Как я могу сделать что-то вроде этого:
var dbqueryuser = dbquery.where(c => c.(user specified field) > 20);
мне нужно сделать пользовательские сгенерированные операторы SQL или можно каким-то образом генерировать действительный
Expression<Func<test,bool>>
заявления с помощью отражения ли?
Примечание: Это здание на предыдущий вопрос, я спросил здесь Linq to custom sql
Я поясню нужно взять список фильтров, но и получать запросы для работы на БД (как БД возвращает много данных, и я хочу чтобы получить как можно больше фильтруется на стороне БД, а не стороне пользователя)
Да, вы можете создать 'Expression> 'dynami но не с отражением, а с методами класса Expression. Существует много примеров того, как это сделать, если вы хотите получить более конкретный ответ, вы должны опубликовать, как выглядит ваше определение фильтра. –