/// <summary>
        /// Cria a expresão de agrupamento por.
        /// </summary>
        /// <returns></returns>
        protected override LambdaExpression CreateGroupByExpression()
        {
            MemberAccessExpressionBuilderBase base2 = ExpressionBuilderFactory.MemberAccess(this.Queryable, this._groupDescriptor.MemberType, this._groupDescriptor.Member);

            base2.ParameterExpression = base.ParameterExpression;
            return(base2.CreateLambdaExpression());
        }
        /// <summary>
        /// Cria uma expressão seletora do membro.
        /// </summary>
        /// <returns></returns>
        private System.Linq.Expressions.LambdaExpression CreateMemberSelectorExpression()
        {
            var base2 = ExpressionBuilderFactory.MemberAccess(base.ItemType, (Type)null, this.Function.SourceField);

            base2.Options.CopyFrom(base.Options);
            var memberExpression = base2.CreateMemberAccessExpression();

            return(System.Linq.Expressions.Expression.Lambda(this.ConvertMemberAccessExpression(memberExpression), new System.Linq.Expressions.ParameterExpression[] {
                base2.ParameterExpression
            }));
        }
示例#3
0
        /// <summary>
        /// Cria a expressão do membro.
        /// </summary>
        /// <returns></returns>
        protected virtual Expression CreateMemberExpression()
        {
            Type memberType = this.FilterDescriptor.MemberType;
            MemberAccessExpressionBuilderBase base2 = ExpressionBuilderFactory.MemberAccess(base.ParameterExpression.Type, memberType, this.FilterDescriptor.Member);

            base2.Options.CopyFrom(base.Options);
            base2.ParameterExpression = base.ParameterExpression;
            Expression expression = base2.CreateMemberAccessExpression();

            if ((memberType != null) && (expression.Type.GetNonNullableType() != memberType.GetNonNullableType()))
            {
                expression = Expression.Convert(expression, memberType);
            }
            return(expression);
        }