检查特定日期是否存在于给定周的设定范围内并添加到列表
Check specific days exist in a set range of given weeks and add to list
获取和return获取 3 周范围内的特定日期列表的最佳选择是什么?
我的意图是根据交付中心指定的可用日期创建交付日期
public List<DayOfWeek> DeliveryDays { get; set; }
DeliveryDays 包含 0-6 的设置值(0 表示星期日,1 表示星期一,等等)
我想获取这些值,将它们传递给接下来 3 周的日期,以及 return 列表中的那些交货天数(因此只有那些中心可以在 select 天订购)。
这是我目前的情况:
public List<DateTime> CalculateAvailableDeliveryDates()
{
//Loop through 3 weeks of days
DateTime today = DateTime.Today; //Specify today's date
DateTime totalDateCount = today.AddDays(1); //Plus one day on each time counted
var dates = Enumerable.Range(0, 21).Select(days => totalDateCount.AddDays(days)).ToList(); //Count from 0 to 21 (3 weeks worth of days). On each count, run totalDateCount
//if exists in deliveryDayList
//add to dates via dates.Add func
if (DeliveryDays.Contains(DayOfWeek.Monday))
{
//action
} //and so on for each day
//return specific dates from date range
return dates;
}
目前我得到 21 天的读数。 if 语句什么都不做,只是作为我的逻辑的一个例子。
最好的方法是:与其先获取列表,不如根据每个中心的 DeliveryDates 检查并嵌套 if/case 语句,然后 return 将它们放入列表中?
提前致谢。
给定 DayOfWeek
列表,您可以 select 接下来 21
天中与使用 System.Linq
的一周中的某一天相匹配的所有日期。 Enumerable.Range
select 是一系列数字,Select
将 select 一堆 DateTime
代表 Today
加上一些天数的对象,并且Where
用于筛选结果,比较每个日期的DayOfWeek
是否存在于DeliveryDays
中:
List<DayOfWeek> DeliveryDays = new List<DayOfWeek>();
public List<DateTime> GetAvailableDeliveryDates()
{
// 1. Get a range of numbers representing the days to add
// to today, which will make up our range of dates
// 2. Select a date using Today.AddDays for each number
// 3. Filter on only days which are contained in DeliveryDays
return Enumerable.Range(0, 21) // Define the range
.Select(i => DateTime.Today.AddDays(i)) // Select the range
.Where(date => DeliveryDays.Contains(date.DayOfWeek)) // Filter the range
.ToList();
}
获取和return获取 3 周范围内的特定日期列表的最佳选择是什么?
我的意图是根据交付中心指定的可用日期创建交付日期
public List<DayOfWeek> DeliveryDays { get; set; }
DeliveryDays 包含 0-6 的设置值(0 表示星期日,1 表示星期一,等等)
我想获取这些值,将它们传递给接下来 3 周的日期,以及 return 列表中的那些交货天数(因此只有那些中心可以在 select 天订购)。
这是我目前的情况:
public List<DateTime> CalculateAvailableDeliveryDates()
{
//Loop through 3 weeks of days
DateTime today = DateTime.Today; //Specify today's date
DateTime totalDateCount = today.AddDays(1); //Plus one day on each time counted
var dates = Enumerable.Range(0, 21).Select(days => totalDateCount.AddDays(days)).ToList(); //Count from 0 to 21 (3 weeks worth of days). On each count, run totalDateCount
//if exists in deliveryDayList
//add to dates via dates.Add func
if (DeliveryDays.Contains(DayOfWeek.Monday))
{
//action
} //and so on for each day
//return specific dates from date range
return dates;
}
目前我得到 21 天的读数。 if 语句什么都不做,只是作为我的逻辑的一个例子。
最好的方法是:与其先获取列表,不如根据每个中心的 DeliveryDates 检查并嵌套 if/case 语句,然后 return 将它们放入列表中?
提前致谢。
给定 DayOfWeek
列表,您可以 select 接下来 21
天中与使用 System.Linq
的一周中的某一天相匹配的所有日期。 Enumerable.Range
select 是一系列数字,Select
将 select 一堆 DateTime
代表 Today
加上一些天数的对象,并且Where
用于筛选结果,比较每个日期的DayOfWeek
是否存在于DeliveryDays
中:
List<DayOfWeek> DeliveryDays = new List<DayOfWeek>();
public List<DateTime> GetAvailableDeliveryDates()
{
// 1. Get a range of numbers representing the days to add
// to today, which will make up our range of dates
// 2. Select a date using Today.AddDays for each number
// 3. Filter on only days which are contained in DeliveryDays
return Enumerable.Range(0, 21) // Define the range
.Select(i => DateTime.Today.AddDays(i)) // Select the range
.Where(date => DeliveryDays.Contains(date.DayOfWeek)) // Filter the range
.ToList();
}