//TODO : Should be calculated directly... public void PopulateYears() { //Get all Years when everything is loaded Years.Add(ALL_YEARS); foreach (var year in AllPlays.GroupBy(p => p.Date.Year).Select(p => p.Key)) { Years.Add(year.ToString()); } }
public void LoadPlays(XmlDocument xmlPlays) { foreach (XmlNode play in xmlPlays.SelectNodes("//plays/play")) { //Not optimal but not a big performance issue.. for (int i = 0; i < Int32.Parse(play.TextAttribute("quantity")); i++) { AllPlays.Add(LoadPlay(play)); Plays.id++; } } TotalPlays = AllPlaysByYear.Count; }
public ObservableCollection <KeyValuePair <string, int> > GetGamesByDateRange(DateRange dateRange, string year = ALL_YEARS) { _gamesByDateRange.Clear(); switch (dateRange) { case DateRange.Month: List <string> allYears; if (year == ALL_YEARS) { allYears = Years.OrderBy(y => y).Take(Years.Count - 1).ToList(); } else { allYears = new List <string>() { year } }; foreach (var currentYear in allYears) { for (int month = 1; month <= 12; month++) { _gamesByDateRange.AddOrUpdate(String.Concat(month, " ", currentYear), AllPlays.Count(p => (p.Date.Year.Equals(Int32.Parse(currentYear)) && p.Date.Month.Equals(month)))); } } break; case DateRange.Year: foreach (var currentYear in Years.OrderBy(y => y).Take(Years.Count - 1)) { _gamesByDateRange.AddOrUpdate(currentYear, AllPlays.Count(p => p.Date.Year.Equals(Int32.Parse(currentYear)))); } break; default: break; } return(_gamesByDateRange); }