/// <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); }
/// <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); }