如何循环开始和结束DateTimes类,将每个日期范围之间的日期存储到列表中,每次迭代?

问题描述 投票:1回答:1

基本上,我正在尝试获取给定Cottage_ID的可用日期列表(制作假日预订系统)。

不确定我的逻辑是否合理,但我在想,如果有从今天到2019年最后一天的所有日期的List<DateTime>

然后我遍历在数据库中填充了预定日期的一类日期范围,并用这些填充新的List;然后像availableDates = allDays.Except(bookedDates)一样创建第三个列表。

问题是一个列表是List<DateTime>,另一个是List<DateRange>,有2个DateTime Properties

如何遍历dateRange类,然后遍历每个日期范围存储到达和离开日期之间的所有日期?

从数据库获取预订日期的服务方法

  public List<DateRange> GetBookedDates(int id)
    {
        DateRange dateRange = new DateRange();

        DateTime start = Convert.ToDateTime(dateRange.Arrive);

        DateTime endDate = Convert.ToDateTime(dateRange.Depart);

        SqlConnection conn = new SqlConnection(dataSource);

        List<DateRange> bookedDates = new List<DateRange>();

        //To avoid sql injections parameters are used so the sql query is not concatinated with user input.  
        string sqlQueryDeleteBooking = "SELECT Arrive, Depart FROM dbo.Bookings WHERE Cottage_ID=@id";

        SqlCommand cmd = new SqlCommand(sqlQueryDeleteBooking, conn);
        cmd.Parameters.AddWithValue("@id", id);

        conn.Open();

        SqlDataReader reader = cmd.ExecuteReader();

        while (reader.Read())
        {
            if (!reader.HasRows)
            {
                throw new Exception();
            }
            else
            {
                bookedDates.Add(new DateRange()
                {


                    Arrive = Convert.ToDateTime(reader["Arrive"]),
                    Depart = Convert.ToDateTime(reader["Depart"]),

                });

                for (DateTime dates = start; dates <= endDate; dates = dates.AddDays(1))
                {

                    bookedDates.Add(dates);

                }
            }


        }reader.NextResult();

        return bookedDates;
    }

循环用于获取从今天到12月31日的日期列表,但显然qazxsw poi是qazxsw poi而不是qazxsw poi我可以将bookedDates作为List<DateRange>类型或反之亦然吗?

服务方法获得一年中的所有日子

List<DateTime>

日期范围类

dates

}

所以是的,这个想法是从DateRange列表中删除所有在 public List<DateTime> GetAvailableDates(int id) { DateTime start = DateTime.Today; string end = "31/12/2019"; DateTime endDate = DateTime.Parse(end); List<DateTime> allDays = new List<DateTime>(); for (DateTime dates = start; dates <= endDate; dates = dates.AddDays(1)) { allDays.Add(dates); } return allDays; } 预订的日子。

我有一个[DataContract] public class DateRange { [DataMember] public DateTime Arrive { get; set; } [DataMember] public DateTime Depart { get; set; } } DateRange我如何一起使用它们?

TIA!

c# wcf
1个回答
0
投票

我宁愿将可用日期作为延迟枚举返回:

allDays
© www.soinside.com 2019 - 2024. All rights reserved.