Возможно ли создать список за последние 12 месяцев с помощью LINQ? - PullRequest
0 голосов
/ 11 декабря 2010

Я надеялся сделать что-то вроде этого:

        List<DateTime> last12 = new List<DateTime>(12);
        last12.ForEach(t=>t.AddMonths(-{t.Index}));

Но не совсем понял, как сделать {t.Index} часть ...

Возможно ли такое?

Ответы [ 3 ]

2 голосов
/ 11 декабря 2010
 DateTime start = DateTime.Now; 
 List<DateTime> last12 = (from r in Enumerable.Range(1,12) select start.AddMonths(0-r)).ToList();
1 голос
/ 11 декабря 2010

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
1 голос
/ 11 декабря 2010

Не ясно, хотите ли вы, чтобы текущий месяц не учитывался, но это укажет вам правильное направление, которое вы можете отредактировать для своих нужд.

...