C# 从数据库非列表中获取排除天数

C# 从数据库非列表中获取排除天数,c#,database,datetimepicker,C#,Database,Datetimepicker,因此,我必须从日期中获取结束期,并从日历中排除周六、周日和特定日期,因此我使用列表进行了设置,但我需要使用数据库进行设置,因为随着时间的推移,我可能需要添加一些额外的假日,我有数据库和一切设置添加我只需要得到的功能,将正确地读取数据从数据库和排除他们 下面是我如何使用列表创建的代码: List<DateTime> Holidays = new List<DateTime>() { new DateTime(2014, 01, 01),

因此,我必须从日期中获取结束期,并从日历中排除周六、周日和特定日期,因此我使用列表进行了设置,但我需要使用数据库进行设置,因为随着时间的推移,我可能需要添加一些额外的假日,我有数据库和一切设置添加我只需要得到的功能,将正确地读取数据从数据库和排除他们

下面是我如何使用列表创建的代码:

    List<DateTime> Holidays = new List<DateTime>() 
    { 
        new DateTime(2014, 01, 01), 
        new DateTime(2014, 04, 18), 
        new DateTime(2014, 12, 24), 
        new DateTime(2014, 12, 25), 
        new DateTime(2014, 12, 26),
        new DateTime(2014, 12, 31) 
    };

    public Form1()
    {
       InitializeComponent();
    }

    DateTime AddBusinessDays(int days, DateTime starDate)
    {          
        DateTime tempdt = new DateTime(starDate.Year, starDate.Month, starDate.Day);           
        tempdt = ExHolidays(tempdt, Holidays);
        if (tempdt > starDate.Date && !(days == 0))
             tempdt = tempdt.AddDays(-1);
        days = days - 1;
        while (days > 0)
        {
             tempdt = tempdt.AddDays(1);
             // ja sakuma diena ir brivdiena >>> nakamas darbadienas -1
             tempdt = ExHolidays(tempdt, Holidays);
             days = days - 1;
         }          
        return tempdt;            
    }

    DateTime ExHolidays(DateTime startDate, List<DateTime> holidays)
    {
        while (!IsWorkDay(startDate, holidays))
        {
            startDate = startDate.AddDays(1);
        }
        return startDate;
    }

    bool IsWorkDay(DateTime startDate, List<DateTime> holidays)
    {          
        if ((startDate.DayOfWeek == DayOfWeek.Saturday || startDate.DayOfWeek == DayOfWeek.Sunday ||holidays.Contains(startDate)))
        {
            return false;
        }
        else
        {
            return true;
        }
    }

这一切都是可行的,我只是希望能够添加额外的假日日期,我认为最好的方法是通过数据库来实现这一点,这实际上取决于您想要显示的假日。一些假期是固定的,而另一些是一个月的第X天。例如,感恩节总是第四个星期四,因此您需要一个足够灵活的数据库设计来捕获它,然后在应用程序中构建将第四个星期四转换为实际日期的能力


但是,数据库选项很好,因为您只能将显示给用户的日期所在月份内存在的假期调回,而不必通过编程在代码中执行此操作。

此链接可能会有所帮助,并且适用于C#。。不,这不是我要搜索的东西。我想知道如何使数据库与house 3功能一起工作基本上我想用数据库替换列表,但我所做的一切都不工作,但我想搜索的只是用户可以通过datagridview添加它,我已经设置好了所有功能,我只需要house 3功能,它可以为datetimpicker使用数据库日期列not list,因为我无法创建任何用户都可以编辑的列表
dateTimePicker2.Value = AddBusinessDays(30, dateTimePicker1.Value);