我有一个返回过去 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/

10-17 01:58