static async Task Main(string[] args) { var stopwatch = new Stopwatch(); stopwatch.Start(); var collector = new CollectorPipeline(); ReadHillCsv(collector); var mountains = collector.Of <Mountain>().Items; var classifications = collector.Of <Classification>().Items; var maps = collector.Of <Map>().Items; var regions = collector.Of <Region>().Items; var counties = collector.Of <County>().Items; var mountainContainer = new MountainContainer(); await mountainContainer.Create(); await mountainContainer.Save(mountains); var aspectsContainer = new GenericContainer("mountainAspects"); await aspectsContainer.Create(); await aspectsContainer.Save(classifications); await aspectsContainer.Save(maps); await aspectsContainer.Save(regions); await aspectsContainer.Save(counties); stopwatch.Stop(); var seconds = stopwatch.ElapsedMilliseconds / 1000; Console.WriteLine($"Time taken: {seconds:#,##0s}"); await File.WriteAllTextAsync( Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "scotlands-mountains-data.json"), JsonConvert.SerializeObject(new { mountains, classifications, maps, regions, counties })); }
private static void ReadHillCsv(CollectorPipeline collector) { using var csv = new HillCsvReader(); csv.Read(); csv.ReadHeader(); csv.GetRecords <dynamic>() .Select(RecordAsDictionary) .OrderByDescending(Height) .ToList() .ForEach(x => { if (IsScottish(x)) { collector.CollectFrom(new CollectorContext(x)); } }); }