/// <summary>
        /// Applies search with specified criteria.
        /// </summary>
        /// <param name="searchQuery"></param>
        /// <returns></returns>
        protected virtual IQueryable <T> BuildQuery(SearchQuery <T> searchQuery)
        {
            IQueryable <T> collection = _dbSet;

            if (searchQuery == null)
            {
                return(collection);
            }

            return(searchQuery.Apply(collection));
        }
        /// <summary>
        /// Generates query to cached data.
        /// </summary>
        /// <param name="searchQuery"></param>
        /// <returns></returns>
        protected override IQueryable <T> BuildQuery(SearchQuery <T> searchQuery)
        {
            IQueryable <T> collection = this.GetAll().AsQueryable();

            if (searchQuery == null)
            {
                return(collection);
            }

            return(searchQuery.Apply(collection));
        }