public void Init(ICollection <Movie> movies, FirstField ff) { Field = ff; if (Field == FirstField.Year) { SearchTreeByYearByGenre = new c5T.TreeDictionary <long, Dictionary <string, List <Movie> > >(); List <c5T.KeyValuePair <long, Dictionary <string, List <Movie> > > > KVPList = new List <c5T.KeyValuePair <long, Dictionary <string, List <Movie> > > >(); foreach (var YearGrp in movies.GroupBy(m => m.Year)) { long year = YearGrp.Key; Dictionary <string, List <Movie> > genreDict = new Dictionary <string, List <Movie> >(); foreach (var genreGrp in YearGrp.GroupBy(m => m.Genre)) { genreDict.Add(genreGrp.Key, genreGrp.ToList()); } KVPList.Add(new c5T.KeyValuePair <long, Dictionary <string, List <Movie> > >(year, genreDict)); } SearchTreeByYearByGenre.AddAll(KVPList); } else { SearchTreeByGenreByYear = new Dictionary <string, c5T.TreeDictionary <long, List <Movie> > >(); throw new Exception("Not Implemented"); } }
public void Init(ICollection <Movie> movies, FirstField ff) { Field = ff; InitDataStructure(); if (Field == FirstField.Year) { foreach (var YearGrp in movies.GroupBy(m => m.Year)) { Dictionary <string, IList <Movie> > genreDict = new Dictionary <string, IList <Movie> >(); foreach (var genreGrp in YearGrp.GroupBy(m => m.Genre)) { genreDict.Add(genreGrp.Key, genreGrp.ToList()); } long year = YearGrp.Key; BinaryTreeByYearByGenre.Add(year, genreDict); } } else { foreach (var genreGrp in movies.GroupBy(m => m.Genre)) { BinaryTree <long, IList <Movie> > yearTree; if (BinaryTreeType.BinaryTree == TreeType) { yearTree = new BinaryTree <long, IList <Movie> >(); } else { yearTree = new RedBlackTree <long, IList <Movie> >(); } foreach (var YearGrp in genreGrp.GroupBy(m => m.Year)) { long year = YearGrp.Key; yearTree.Add(year, YearGrp.ToList()); } BinaryTreeByGenreByYear.Add(genreGrp.Key, yearTree); } } if (BinaryTreeType.BinaryTree == TreeType) { MoneyGrossBinaryTree = new BinaryTree <long, IList <Movie> >(); } else { MoneyGrossBinaryTree = new RedBlackTree <long, IList <Movie> >(); } foreach (var grossGrp in movies.GroupBy(m => m.Gross)) { MoneyGrossBinaryTree.Add(grossGrp.Key, grossGrp.ToList()); } }