예제 #1
0
        /// <summary>
        ///  合并时段。如果有相交的时段,则合并。
        /// </summary>
        /// <param name="spans">时段集合</param>
        /// <returns></returns>
        public static List <BufferedTimePeriod> Merge(List <BufferedTimePeriod> spans)
        {
            List <BufferedTimePeriod> outs = new List <BufferedTimePeriod>();

            spans.Sort();
            BufferedTimePeriod last = null;

            foreach (var item in spans)
            {
                if (last == null)
                {
                    last = item;
                    continue;
                }
                if (last.BufferedContains(item.Start))
                {
                    last = BufferedTimePeriod.Merge(last, item);
                }
                else
                {
                    outs.Add(last);
                    last = null;
                }
            }
            if (last != null)
            {
                outs.Add(last);
            }

            return(outs);
        }