我有一个开始和结束日期,我希望得到这两个日期(包括两者)之间所有日期的列表。我可以使用一个循环向开始日期添加1天,然后将该日期添加到列表中。类似的东西:
RowLayout
我正在寻找一个整洁的LINQ表达式。有什么想法吗?
答案 0 :(得分:5)
Enumerable.Range
将是一个选项:
var rightNow = DateTime.Now;
var result = Enumerable.Range(1, 30).Select(d => rightNow.AddDays(d)).ToList()
答案 1 :(得分:5)
如果您知道开始和结束,只需使用迭代器块编写一个方法来执行此操作:
public static IEnumerable<DateTime> DateRange(DateTime startInclusive, DateTime endInclusive)
{
for (var current = startInclusive; current <= endInclusive; current = current.AddDays(1))
{
yield return current;
}
}
如果您知道天数,那么Cory的答案就会很好。
上面的方法也可以重载,以便在迭代之间的“步骤”中使用TimeSpan
。