Здравствуйте, Hermitap, Вы писали:
H>Есть готовые решения? или писать самому.
Возможно, подойдет вот это
https://www.nuget.org/packages/Mindbox.WorkingCalendar
Не могу оценить это решение, т.к., как ни странно, но с подобной задачей не сталкивался раньше.