Ejemplo n.º 1
0
        public new static IEnumerable <IntegerRange> FromEnumerable(IEnumerable <int> enumerable, int maxInterval = 1)
        {
            var ranges = new List <IntegerRange>();

            IntegerRange currentRange = null;

            foreach (var item in enumerable)
            {
                if (currentRange == null)
                {
                    currentRange = new IntegerRange(item, item);
                    ranges.Add(currentRange);
                    continue;
                }

                if (currentRange.TryMerge(item, maxInterval))
                {
                    continue;
                }

                var range = ranges.FirstOrDefault(x => x != currentRange && x.TryMerge(item, maxInterval));
                if (range != null)
                {
                    currentRange = range;
                    continue;
                }

                currentRange = new IntegerRange(item, item);
                ranges.Add(currentRange);
            }

            return(ranges.MergeIntersecting(maxInterval));
        }
Ejemplo n.º 2
0
 public static IEnumerable <WeekDayRange> FromEnumerable(IEnumerable <DayOfWeek> enumerable, int maxInterval = 1)
 {
     return(IntegerRange.FromEnumerable(enumerable.Cast <int>(), maxInterval).Select(x => new WeekDayRange((DayOfWeek)x.Start, (DayOfWeek)x.End)));
 }