static int Main(string[] args) { if (args.Length == 0) { Console.WriteLine("SQL Server connection string required as first parameter"); return(1); } ILookup <int, AnimeRelation> relationMap = null; IDictionary <int, string> titleMap = null; IEnumerable <int> animeIds = null; try { using (SqlConnection con = new SqlConnection(args[0])) { con.Open(); relationMap = LoadRelations(con); titleMap = LoadMainTitles(con); // [Un]comment out either of the two below lines based on if you want to test // only JMM series, or all AniDB anime that JMM knows about //animeIds = LoadAllAniDBAnimeIds(con); animeIds = LoadAnimeIdsFromSeries(con); } var autoGrpCalc = new AutoAnimeGroupCalculator(relationMap, mainAnimeSelectionStrategy: MainAnimeSelectionStrategy.MinAirDate); var results = animeIds.Select(id => new { AnimeId = id, GroupId = autoGrpCalc.GetGroupAnimeId(id) }) .ToLookup(a => titleMap[a.GroupId], a => "[" + a.AnimeId + "] " + titleMap[a.AnimeId]) .OrderBy(g => g.Key, StringComparer.CurrentCultureIgnoreCase); foreach (var result in results) { Console.WriteLine(result.Key); foreach (string anime in result) { Console.WriteLine("\t" + anime); } Console.WriteLine(); } } catch (Exception e) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(e); Console.ResetColor(); } return(0); }