public static void FilterStudents(SchoolContext ctx) { var studentsFilter = new StudentFilter { ContainsInName = new[] { "a", "b" }, EnrollmentMinDate = new DateTime(2002, 1, 1), MinCourses = 1, MaxCourses = 3 }; Mapper.Register(new StudentModelMapper()); //GetFilter() is extension method for IFilterExpression<Student> interface and it combines all expression into one using &&. var students = ctx.Students.Where(studentsFilter.GetFilter()).Project().To <StudentModel>().ToList(); }