private void SetRangeAggregationContainer(AggregationItem currentItem, AggregationContainerDescriptor <TEntity> aggregation) { string name = currentItem.Name.Split('.').LastOrDefault(); if (currentItem.RangesDate != null && currentItem.RangesDate.Count() > 0) { IList <IDateRangeExpression> dataRanges = new List <IDateRangeExpression>(); foreach (var item in currentItem.RangesDate) { var range = new DateRangeExpression() { Key = currentItem.Name }; range.From = item.From; range.To = item.To; dataRanges.Add(range); } aggregation.DateRange(name, d => d.Field(currentItem.Name).Ranges(dataRanges.ToArray())); } else if (currentItem.Ranges != null && currentItem.Ranges.Count() > 0) { List <Func <RangeDescriptor, IRange> > funcs = new List <Func <RangeDescriptor, IRange> >(); foreach (var item in currentItem.Ranges) { funcs.Add(d => { d.From(item.From) .To(item.To) .Key(currentItem.Name); return(d); }); } aggregation.Range(name, f => f.Field(currentItem.Name).Ranges(funcs.ToArray())); } }