コード例 #1
0
        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()));
            }
        }