示例#1
0
        public static Expression CallCount(GroupedStage groupedStage)
        {
            var groupedCountMethod = CountWildcardMethod.MakeGenericMethod(groupedStage.ValueType);
            var call = Expression.Call(
                instance: null,
                method: groupedCountMethod,
                arguments: new Expression[] { groupedStage.ParameterExpression });

            return(call);
        }
示例#2
0
        public static Expression CallSum(Expression expression, GroupedStage groupedStage)
        {
            var sumOutputType = GetSumOutputType(expression.Type);

            if (!Equals(sumOutputType, expression.Type))
            {
                expression = Expression.Convert(expression, sumOutputType);
            }

            var sumMethod = GetSumMethod(sumOutputType);

            return(CallMethod(expression, sumMethod, groupedStage));
        }
 public BaseAggregationVisitor(GroupedStage previousStage, VisitorMetadata visitorMetadata) : base(previousStage, visitorMetadata)
 {
     _previousStage   = previousStage;
     _visitorMetadata = visitorMetadata;
 }
示例#4
0
 public OrderByAggregationsVisitor(GroupedStage previousStage, VisitorMetadata visitorMetadata) : base(previousStage, visitorMetadata)
 {
 }
示例#5
0
 public SelectAggregationVisitor(GroupedStage previousStage, VisitorMetadata visitorMetadata) : base(previousStage, visitorMetadata)
 {
     //NOP
 }
示例#6
0
        public static Expression CallMethod(Expression expression, MethodInfo method, GroupedStage stage)
        {
            var groupedSumMethod = method.MakeGenericMethod(stage.ValueType);

            var argumentLambda = Expression.Lambda(expression, stage.ValueParameterExpression);
            var call           = Expression.Call(
                instance: null,
                method: groupedSumMethod,
                arguments: new Expression[] { stage.ParameterExpression, argumentLambda });

            return(call);
        }
示例#7
0
 public HavingVisitor(GroupedStage previousStage, VisitorMetadata visitorMetadata) : base(previousStage, visitorMetadata)
 {
 }