寻找linq查询以填充一个列表,其中包含月份和年份(例如:2012年1月)。从当前月开始。
如果当前月份是2011年12月,则列表应该如下所示:
var currentdate = System.DateTime.Now
如果当前月份是2011年12月,则列表应该如下所示:
2011年12月 2012年1月 ...... 2012年11月
var months =
Enumerable.Range(0, 12).
Select(n => DateTime.Today.AddMonths(n)).
Select(d = new { Year = d.Year, Month = d.Month });
我正在编辑我的样本代码,将其转化为一种我几乎可以用于生产的方法,因为它更具有可测试性和文化意识:
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
};
}