using System.Collections.Generic;
public static void Main()
var ci = new System.Globalization.CultureInfo("pt-BR");
System.Threading.Thread.CurrentThread.CurrentCulture = ci;
System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
var separador = new string('#', 50);
var listaSemana = new List<DateTime>();
var listaFeriados = new List<DateTime>();
var dataAtual = DateTime.Now;
while (data.DayOfWeek != DayOfWeek.Sunday)
for (var i = 0; i < 6; i++)
listaFeriados.Add(new DateTime(2020, dataAtual.Month, dataAtual.Day-3));
listaFeriados.Add(new DateTime(2020, dataAtual.Month, dataAtual.Day));
foreach (var feriado in listaFeriados)
Console.WriteLine($"FERIADO: {feriado.ToString("dddd, dd/MM/yyyy")}");
Console.WriteLine(separador);
ValidarFeriados(listaSemana, listaFeriados);
private static void ValidarFeriados(List<DateTime> datas, List<DateTime> feriados)
var feriadosAnoAtual = feriados.Select(f => new DateTime(DateTime.Now.Year, f.Month, f.Day));
var diasFeriados = datas.SelectMany(d => feriadosAnoAtual.Where(f => f.Date == d.Date));
var datasOk = datas.Where(d => feriados.All(f => new DateTime(d.Year, f.Month, f.Day) != d.Date));
var todasDatas = new Dictionary<DateTime, bool>();
foreach (var data in diasFeriados)
todasDatas.Add(data, true);
foreach (var data in datasOk)
todasDatas.Add(data, false);
foreach (var data in todasDatas.OrderBy(d => d.Key))
Console.WriteLine($"{data.Key.ToString("dddd, dd/MM/yyyy")} {(data.Value ? "Feriado" : "OK")}");