Linq列出了全年的月份+年份

时间:2011-12-19 10:42:29

标签: c# linq

查找linq查询以填充月份+年份列表(例如2012年1月)

从当月开始

   var currentdate = System.DateTime.Now

如果2011年12月是当月 那么列表应该是这样的

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分: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