Ну, в принципе, вам нужен Expression<Func<YourModel, bool>>
. Вы строите фильтр для передачи в EF. Приведенной ниже информации более чем достаточно для начала работы.
Итак, представьте, что у вас есть класс, подобный приведенному ниже. Это может быть любой класс, а не только ViewModel.
public class Person
{
public int Id {get;set;}
public string Name {get;set;}
}
Выражение будет выглядеть так:
Expression<Func<Person,bool>> predicate = p => p.Name == "Some name";
db.People.Where(predicate); // How you would use it in a db context
Вы также можете просмотреть эту ссылку, которая использует LinqKit . Вам не нужно использовать LinqKit, но есть несколько хороших примеров http://www.albahari.com/nutshell/linqkit.aspx
Я хочу иметь возможность фильтровать таблицу на основе заполненных параметров в модели представления.
Поскольку вы хотите, чтобы вышеперечисленное вы могли добавить к вашему predicate
и просто передать его к вашему Where,Any,Count...
как единое целое. Вы можете увидеть множество приемов добавления в свой фильтр здесь: Как добавить к выражению
Мой любимый способ добавления - использование построителя предикатов linqkit http://www.albahari.com/nutshell/predicatebuilder.aspx В ссылке выше представлены многие методы, включая построитель предикатов.