powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
7 сообщений из 7, страница 1 из 1
Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
    #36277377
OldWoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! Хитрая задачка
1) Оператор вводит
интервал работы предприятия (DateTime) StartDate, EndDate

дни недели 1,2,3 (пн, вт., ср) по каким работает
Надо этот ввод преобразовать в список дней List DateTime

2) обратно из списка дней получить интервал и дни недели!
Как её решить ?
...
Рейтинг: 0 / 0
Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
    #36277441
OldWoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одну строну у меня получилось так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
   DateTime sd = dateTimePicker1.Value.Date; // первый день
            DateTime ed = dateTimePicker2.Value.Date; // последний
           
             List<int> ListdayOfwork = GetDayWork();// дни недели

            listDate = Enumerable.Range(0, (ed - sd).Days)
                .Where(p => ListdayOfwork.Contains((int)sd.AddDays(p).DayOfWeek))
                .Select(p => sd.AddDays(p)).ToList();

а вот как наоборот из списка интервал и дни?
...
Рейтинг: 0 / 0
Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
    #36278006
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и в чем проблема?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
            DateTime sd = DateTime.Today; // первый день
            DateTime ed = DateTime.Today.AddDays( 14 ); // последний

            List<int> ListdayOfwork = new List<int>() {  1 ,  2 ,  3 ,  4 ,  5  };

            var listDate = Enumerable.Range( 0 , (ed - sd).Days)
                .Select(p => sd.AddDays(p))
                .Where(p => ListdayOfwork.Contains((int)p.DayOfWeek))
                .ToList();

            foreach (var d in listDate)
                Console.WriteLine(d.ToShortDateString());

            var workDays = listDate
                .Select(p=>(int)p.DayOfWeek)
                .Distinct()
                .OrderBy(p => p)
                .ToArray();

            sd = listDate.Min();
            ed = listDate.Max();

            Console.WriteLine("Start: {0}, End: {1}, days: {2}", sd, ed, string.Join(";", workDays));

            Console.ReadKey();
...
Рейтинг: 0 / 0
Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
    #36278056
OldWoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OldWokerВ одну строну у меня получилось так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
   DateTime sd = dateTimePicker1.Value.Date; // первый день
            DateTime ed = dateTimePicker2.Value.Date; // последний
           
             List<int> ListdayOfwork = GetDayWork();// дни недели

            listDate = Enumerable.Range(0, (ed - sd).Days)
                .Where(p => ListdayOfwork.Contains((int)sd.AddDays(p).DayOfWeek))
                .Select(p => sd.AddDays(p)).ToList();

а вот как наоборот из списка интервал и дни?
Вот бы Господин Зы глянул, может он что и придумал :-)
...
Рейтинг: 0 / 0
Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
    #36278103
OldWoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наиболее простой алгоритм типа

Код: plaintext
1.
2.
3.
4.
5.
6.
           List<DateTime> listDate // входной список дат

          // строим список рабочих дней недели
            var dayofweeklist = listDate.Select(p => (int)p.DayOfWeek)
                   .Distinct()
                   .OrderBy(p => p).ToList();
и по нему восстанавливаем интервалы
...
Рейтинг: 0 / 0
Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
    #36278287
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
меня не видно шоле?
...
Рейтинг: 0 / 0
Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
    #36278896
OldWoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зыменя не видно шоле?
Привет Зы! Увидел только сегодня, вчера видно не было! Спасибо я что то подобное придумал, хотя в общем случае, когда накладываются разные расписания, "гармонический анализ" вряд ли возможен!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Linq хитрая задачка - как преобразовать рабочие дни в список и обратно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]