linq c#按月和年范围分组

时间:2017-06-12 12:42:25

标签: c# linq date group-by

我有一份包含日期的记录列表。我希望按月和年份对此列表进行分组,例如,我的日期范围可以从2012年10月到2013年3月,2013年4月到2013年9月,然后是2013年10月到2014年3月,最后到2014年3月到2014年9月< / p>

所以id希望数据分为4组,每组超过6个月 所以 2012年10月 - 2013年3月 2013年4月 - 2013年9月 2013年10月 - 2014年3月 2014年4月 - 2014年9月

我已经想出如何分组一个月的范围,但我无法弄清楚如何包括一年(我目前得到2组),继续我到目前为止

var season = List.GroupBy(item =&gt;((item.StartDate.Month - 1)/ 6));

2 个答案:

答案 0 :(得分:0)

您可以逐年分组,然后按月使用您的灌浆

var season = List.GroupBy(item => new { item.StartDate.Year,  month = ((item.StartDate.Month - 1) / 6)});

或者您可以为

等值使用组合标记
var season = List.GroupBy(item => item.StartDate.Year.ToString() + ((item.StartDate.Month - 1) / 6).ToString());

答案 1 :(得分:0)

计算总月数是要走的路

.GroupBy(item => (item.StartDate.Year * 12 + item.StartDate.Month + 2) / 6))