我有一个返回过去 x 天的方法,它目前执行以下操作:
var dates = new List<DateTime>();
for (int i = 0; i < numDays; i++)
{
dates.Add(DateTime.Today.AddDays(-i));
}
return dates;
我觉得应该有一种更紧凑的方式来做到这一点,也许使用 LINQ。建议?另外,如果我按照我的方式保留它,
DateTime.Today
是否会更有效,如果我将它存储在循环外的变量中,然后在循环内对该值调用 AddDays
?编辑: LINQ 使用惰性求值,对吗?我脑子里出现了疯狂的画面:
return DateTime.AllDaysInTheHistoryOfTimeEver.Where(day =>
day.BeforeOrOn(DateTime.Today) &&
day.After(DateTime.Today.AddDays(-numDays))
);
最佳答案
var start = DateTime.Today;
var days = Enumerable.Range(0, numDays).Select(i => start.AddDays(-i)).ToList();
首先捕获
start
避免了在午夜左右运行它的极端情况。关于C# 过去日期时间列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2134893/