コード例 #1
0
        /// <summary>
        /// Cria uma expressõa para os itens a parti do construtor do filho
        /// </summary>
        /// <returns></returns>
        private Expression CreateItemsExpressionFromChildBuilder()
        {
            LambdaExpression predicate = this.CreateChildItemsFilterExpression();
            IQueryable       queryable = this.Queryable.Where(predicate);

            _childBuilder.Queryable = queryable;
            return(_childBuilder.CreateQuery().Expression);
        }
        /// <summary>
        /// Cria a consulta.
        /// </summary>
        /// <returns></returns>
        public IQueryable CreateQuery()
        {
            GroupDescriptorExpressionBuilder childBuilder = null;

            foreach (GroupDescriptor descriptor in _groupDescriptors.Reverse <GroupDescriptor>())
            {
                childBuilder = new GroupDescriptorExpressionBuilder(_queryable, descriptor, childBuilder, this._notPagedData)
                {
                    Options =
                    {
                        LiftMemberAccessToNull = _queryable.Provider.IsLinqToObjectsProvider()
                    }
                };
            }
            if (childBuilder != null)
            {
                return(childBuilder.CreateQuery());
            }
            return(_queryable);
        }