public static IList <DateTime> GetDaysOfWeek(this DateTime date, DayOfWeekFlags days)
        {
            var daysOfWeek = days.ToDays();

            var dates = new DateTime[daysOfWeek.Count];

            for (int i = 0; i < dates.Length; i++)
            {
                dates[i] = date.GetDayOfWeek(daysOfWeek[i]);
            }

            return(dates);
        }
        public static IDictionary <DayOfWeek, int> CalculateDistanceToNextDay(this DayOfWeekFlags flags)
        {
            var days = flags.ToDays();

            return(Enum.GetValues(typeof(DayOfWeek)).Cast <DayOfWeek>().ToDictionary(d => d,
                                                                                     d =>
            {
                var value = d;
                do
                {
                    value = (int)value == 6 ? 0 : value + 1;
                } while (!days.Contains(value));
                return (value <= d ? (int)value + 7 : (int)value) - (int)d;
            }));
        }