public async Task <IEnumerable <Student> > FilterAsync(StudentFilter filter, bool track = false) { var query = _context.Students.OrderBy(s => s.CreatedAt).AsQueryable(); if (!track) { query = query.AsNoTracking(); } if (filter.FullObject) { query = FullStudentQuery().Invoke(query); } query = filter.ApplyToQuery(query); return(await query.ToListAsync()); }