在C#中制作星期四DropDown列表的最佳方法是什么?

时间:2018-02-19 15:33:31

标签: c# twitter-bootstrap dropdown

我是C#的新手,想制作一个包含所有星期四日期的下拉列表?

我目前有一个包含所有这些日期的SQL表,但宁愿在函数中生成它们并用于填充下拉列表。

任何最佳方法的例子?

更新:我最终使用了日历bootstrap-datepicker并禁用了除星期四之外的所有日子。这给了我周四的当月,解决了我的问题。

3 个答案:

答案 0 :(得分:3)

您可以执行类似的操作,在那里您要对要显示的第一个星期四进行硬编码,然后设置您想要的星期四。

        var list = new List<DateTime>();
        DateTime firstThursday = new DateTime(2018,02,20);
        var numberOfThursdayWanted = 1000;
        for (int i = 0; i < numberOfThursdayWanted; ++i)
        {
            list.Add(firstThursday.AddDays(i*7));
        }

        return list;

答案 1 :(得分:2)

您可以使用LINQ生成“全部”列表:

DateTime firstThursday = DateTime.MinValue.AddDays(Enumerable.Range(0, 7).First(d => DateTime.MinValue.AddDays(d).DayOfWeek == DayOfWeek.Thursday));
int weeks = (int)Math.Ceiling((DateTime.MaxValue - firstThursday).Days / 7.0);
var allThursdays = Enumerable.Range(0, weeks).Select(d => firstThursday.AddDays(d * 7));

请注意allThursdays只是LINQ查询。如果将所有DateTimes存储在集合中没有意义。但也许你只想要在特定时间跨度之间的那些,即:

DateTime start = DateTime.Today.AddYears(-10);
DateTime end = DateTime.Today.AddYears(10);
DateTime[] allThursDaysInLast10YearsUntilNext10Years = allThursdays
  .Where(d => d >= start && d <= end)
  .ToArray();

答案 2 :(得分:1)

首先,您需要以某种方式缩小搜索结果范围。例如按年份,或按Dimitri建议的计数。

为此您可以查看以下答案:Create an array or List of all dates between two dates

一旦你拥有了IEnumerable<DateTime>,你就必须使用LINQ过滤星期六,如下所示:

IEnumerable<DateTime> allDateTimes = null; //change this for whatever range you need
IEnumerable<DateTime> onlyThursdays = allDateTimes.Where(d => d.DayOfWeek == DayOfWeek.Thursday);