LINQ表达式生成两个日期之间的天数列表

时间:2015-07-24 14:10:30

标签: c# linq

我有一个开始和结束日期,我希望得到这两个日期(包括两者)之间所有日期的列表。我可以使用一个循环向开始日期添加1天,然后将该日期添加到列表中。类似的东西:

RowLayout

我正在寻找一个整洁的LINQ表达式。有什么想法吗?

2 个答案:

答案 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