C#按日期范围内的名称获取周日的日期值

C#按日期范围内的名称获取周日的日期值,c#,datetime,C#,Datetime,我有string[]WeekDayNames,它表示周日名称的数组(如“星期一”、“星期三”) 我需要一个特定日期范围的工作日名称中的所有日期名称的日期。 示例:2013年11月19日至2013年11月28日之间的星期三为:2013年11月20日至2013年11月27日 谢谢 您可以通过一个简单的循环来实现这一点,如: DateTime startDate = new DateTime(2013, 11, 19); DateTime endDate = new DateTime(2013, 11

我有
string[]WeekDayNames
,它表示周日名称的数组(如“星期一”、“星期三”)

我需要一个特定日期范围的工作日名称中的所有日期名称的日期。 示例:2013年11月19日至2013年11月28日之间的星期三为:2013年11月20日至2013年11月27日


谢谢

您可以通过一个简单的循环来实现这一点,如:

DateTime startDate = new DateTime(2013, 11, 19);
DateTime endDate = new DateTime(2013, 11, 28);

List<DateTime> list = new List<DateTime>();
while (startDate <= endDate)
{
    if (startDate.DayOfWeek == DayOfWeek.Wednesday)
    {
        list.Add(startDate);
    }
    startDate = startDate.AddDays(1);
}

您可以通过一个简单的循环来实现这一点,如:

DateTime startDate = new DateTime(2013, 11, 19);
DateTime endDate = new DateTime(2013, 11, 28);

List<DateTime> list = new List<DateTime>();
while (startDate <= endDate)
{
    if (startDate.DayOfWeek == DayOfWeek.Wednesday)
    {
        list.Add(startDate);
    }
    startDate = startDate.AddDays(1);
}

首先,我将把字符串转换为real
DayOfWeek
s

string[] WeekDayNames = new[] { "Monday","Wednesday" };
DayOfWeek[] days = WeekDayNames
    .Select(s => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), s))
    .ToArray();
DateTime start = new DateTime(2013, 11, 19);
DateTime end = new DateTime(2013, 11, 28);
。。。然后可以使用此LINQ查询:

IEnumerable<DateTime> range = Enumerable.Range(0, (end - start).Days + 1)
    .Select(d => start.AddDays(d))
    .Where(dt => days.Contains(dt.DayOfWeek));
IEnumerable range=Enumerable.range(0,(结束-开始).Days+1)
.Select(d=>start.AddDays(d))
其中(dt=>days.Contains(dt.DayOfWeek));

首先,我要将您的字符串转换为real
DayOfWeek
s

string[] WeekDayNames = new[] { "Monday","Wednesday" };
DayOfWeek[] days = WeekDayNames
    .Select(s => (DayOfWeek)Enum.Parse(typeof(DayOfWeek), s))
    .ToArray();
DateTime start = new DateTime(2013, 11, 19);
DateTime end = new DateTime(2013, 11, 28);
。。。然后可以使用此LINQ查询:

IEnumerable<DateTime> range = Enumerable.Range(0, (end - start).Days + 1)
    .Select(d => start.AddDays(d))
    .Where(dt => days.Contains(dt.DayOfWeek));
IEnumerable range=Enumerable.range(0,(结束-开始).Days+1)
.Select(d=>start.AddDays(d))
其中(dt=>days.Contains(dt.DayOfWeek));

到目前为止,您尝试过什么?尝试过谷歌,花了很多时间already@EvgeniyLabunskiy不要告诉我们你尝试了什么,告诉我们你尝试了什么,解释你研究了什么,解释为什么它不适合你。我在谷歌做了一项研究。就这些。我没有找到任何与我的需求相匹配或近似的示例。所以我使用了stack。到目前为止,你尝试了什么?尝试了谷歌,花了很多时间already@EvgeniyLabunskiy不要告诉我们你尝试了什么,告诉我们你尝试了什么,解释你研究了什么,解释为什么它不适合你。我在谷歌做了一项研究。就这些。我没有找到任何与我的需求相匹配或近似的示例。所以我使用了stack,就像变魔术一样!谢谢你,就像魔术一样!非常感谢你!我接受了@Tim的回答,因为它的实现更加“漂亮”。非常感谢!我接受了@Tim的回答,因为它的实现更加“漂亮”