/// <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>
        /// Recupera o construtor da expressão de acesso ao membro.
        /// </summary>
        /// <param name="source">Consulta de origem.</param>
        /// <param name="memberType">Tipo do membro.</param>
        /// <param name="memberName">Nome do membro.</param>
        /// <returns></returns>
        public static MemberAccessExpressionBuilderBase MemberAccess(IQueryable source, Type memberType, string memberName)
        {
            MemberAccessExpressionBuilderBase base2 = MemberAccess(source.ElementType, memberType, memberName);

            base2.Options.LiftMemberAccessToNull = source.Provider.IsLinqToObjectsProvider();
            return(base2);
        }
        /// <summary>
        /// Recuper ao construtor de expressão para acessar o membro.
        /// </summary>
        /// <param name="elementType"></param>
        /// <param name="memberType"></param>
        /// <param name="memberName"></param>
        /// <param name="liftMemberAccess"></param>
        /// <returns></returns>
        public static MemberAccessExpressionBuilderBase MemberAccess(Type elementType, Type memberType, string memberName, bool liftMemberAccess)
        {
            MemberAccessExpressionBuilderBase base2 = MemberAccess(elementType, memberType, memberName);

            base2.Options.LiftMemberAccessToNull = liftMemberAccess;
            return(base2);
        }
Ejemplo n.º 4
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);
        }