基本上,我正在尝试获取给定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!
我宁愿将可用日期作为延迟枚举返回:
allDays