private IAggregationInstance CreateAggregatorInstance(DistinctAggregator aggregator)
        {
            switch (aggregator)
            {
            case DistinctAggregator.First: return(new FirstAggregationInstance());

            case DistinctAggregator.FirstNotNull: return(new FirstNotNullAggregationInstance());

            case DistinctAggregator.Last: return(new LastAggregationInstance());

            case DistinctAggregator.Max: return(new MaxAggregationInstance());

            case DistinctAggregator.Min: return(new MinAggregationInstance());

            case DistinctAggregator.Sum: return(new SumAggregationInstance());

            case DistinctAggregator.Avg: return(new AvgAggregationInstance());
            }
            return(null);
        }
 public AggregationBuilder <T> ForProperty <X>(Expression <Func <T, X> > getProperty, DistinctAggregator aggregator)
 {
     _aggregators[getProperty.GetPropertyInfo().Name] = aggregator;
     return(this);
 }