我有一个开始和结束日期,我想获得这两个日期(包括两者)之间所有日期的列表.我可以使用一个循环向开始日期添加1天,然后将该日期添加到列表中.就像是:
DateTime end = DateTime.Now;
DateTime start = end.AddDays(-30);
DateTime current = start;
List<DateTime> result = new List<DateTime>();
while (currrent <= end)
{
result.Add(current);
current = current.AddDays(1);
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个整洁的LINQ表达式.有任何想法吗?
Enumerable.Range 将是一个选择:
var rightNow = DateTime.Now;
var result = Enumerable.Range(1, 30).Select(d => rightNow.AddDays(d)).ToList()
Run Code Online (Sandbox Code Playgroud)
如果您知道开始和结束,只需使用迭代器块编写一个方法来执行此操作:
public static IEnumerable<DateTime> DateRange(DateTime startInclusive, DateTime endInclusive)
{
for (var current = startInclusive; current <= endInclusive; current = current.AddDays(1))
{
yield return current;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您知道天数,那么Cory的答案效果很好.
上面的方法也可以重载,以便TimeSpan在迭代之间进行"步骤".
| 归档时间: |
|
| 查看次数: |
778 次 |
| 最近记录: |