整年月份+年份的Linq列表

3
寻找linq查询以填充一个列表,其中包含月份和年份(例如:2012年1月)。从当前月开始。
   var currentdate = System.DateTime.Now

如果当前月份是2011年12月,则列表应该如下所示:

2011年12月 2012年1月 ...... 2012年11月

2个回答

8
var months = 
    Enumerable.Range(0, 12).
    Select(n => DateTime.Today.AddMonths(n)).
    Select(d = new { Year = d.Year, Month = d.Month });

6

我正在编辑我的样本代码,将其转化为一种我几乎可以用于生产的方法,因为它更具有可测试性和文化意识:

public IEnumerable GetMonths(DateTime currentDate, IFormatProvider provider)
{
    return from i in Enumerable.Range(0, 12)
           let now = currentDate.AddMonths(i)
           select new
           {
               MonthLabel = now.ToString("MMMM", provider),
               Month = now.Month,
               Year = now.Year
           };
}

这将在法国电脑上输出以下内容:

LINQPad Output


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接