I have a collection of records. Which have two boxers, match date, location etc... 
I want to separate them by months and group them together. Currently I have what is below. And it works to a degree. That looks for matchdates in the future. that is this year and steps through each month (1-12) and finds any matches in that date range. 

Placing it into a nice dictionary of int, enumerable where int is the month and enumberable is the collection of matches in that month

```
//Build the matches list by Months!!!
var summarysDic = new Dictionary<int, IEnumerable<MatchSummary>>();
for (int i = 1; i <= 12; i++)
{
    var MatchesOfMonth = matches.Where(x => x.MatchDate.Value.Year == DateTime.Now.Year &&
                        x.MatchDate.Value.Month == i &&
                        !x.HasResult() &&
                        x.MatchDate.Value > DateTime.Now);
    if (MatchesOfMonth.Count() > 0)
    {
        summarysDic.Add(i, MatchesOfMonth.OrderBy(x => x.MatchDate).Select(x=> new MatchSummary(x)).ToArray());
    }
}

```

Problem is this currently only deals with this year. I would like to instead make it so it works for "the next 6 months" but this would of course have to work over the new year as well!

Whats the best/cleanest way to go about doing this? 

thanks in advance!

P.S on a side note i have yet to find how to simply do DateTime.Now.Month.add(1) for example (as i will always be going from current date forwards!)

-----COMPLETED CODE!-----

```
//Build the matches list by Months!!!
        var summarysDic = new Dictionary<string, IEnumerable<MatchSummary>>();
        for (int i = 1; i <= 12; i++)
        {
            var checkDate = DateTime.Now.AddMonths(i);
            var MatchesOfMonth = matches.Where(x => x.MatchDate.Value.Month == checkDate.Month &&
                                x.MatchDate.Value.Year == checkDate.Year &&
                                !x.HasResult() &&
                                x.MatchDate.Value > DateTime.Now);
            if (MatchesOfMonth.Count() > 0)
            {
                var firstMatchDate = MatchesOfMonth.First().MatchDate.Value;
                if (firstMatchDate.Year != DateTime.Now.Year)
                {
                    summarysDic.Add(firstMatchDate.ToString("MMMM yyyy"), MatchesOfMonth.OrderBy(x => x.MatchDate).Select(x => new MatchSummary(x)).ToArray());
                }
                else
                {
                    summarysDic.Add(firstMatchDate.ToString("MMMM"), MatchesOfMonth.OrderBy(x => x.MatchDate).Select(x => new MatchSummary(x)).ToArray());
                }

            }
        }

```