我希望能做到这样的事情:
List<DateTime> last12 = new List<DateTime>(12);
last12.ForEach(t=>t.AddMonths(-{t.Index}));
但还没有弄明白如何做{t.Index}
部分......
这样的事情可能吗?
答案 0 :(得分:2)
DateTime start = DateTime.Now;
List<DateTime> last12 = (from r in Enumerable.Range(1,12) select start.AddMonths(0-r)).ToList();
答案 1 :(得分:1)
目前尚不清楚您是否希望计算当前月份,但这会指向正确的方向,您可以根据需要进行相应编辑。
DateTime now = DateTime.Now;
DateTime currentMonth = new DateTime(now.Year, now.Month, 1);
var lastTwelveMonths =
Enumerable.Range(0, 12)
.Select(i => -i)
.Select(monthsToAdd => currentMonth.AddMonths(monthsToAdd))
.ToList();
答案 2 :(得分:1)
Foreach在技术上不是Linq方法。它作为List类中的具体方法存在,但不存在于任何接口中。
var now = DateTime.Now;
var months = Enumerable.Range(1, 12).Select(n => now.AddMonths(-n));
foreach (var month in months)
{
Console.WriteLine(month.ToString("MMMM"));
}
制作(丹麦语)
november
oktober
september
august
juli
juni
maj
april
marts
februar
januar
december