public virtual IQueryable <T> Filter(IQueryable <T> queryable) { // dynamic is for setting Build<T> the right type var spec = (Spec <T>) SpecBuilder <T> .Build((dynamic)this); var searchSpec = (Spec <T>) SpecBuilder <T> .BuildSearch((dynamic)this); return(queryable.Where(spec) .Where(searchSpec)); }