public void Invoke() { var systems = new DumpFileReader <EdsmSystem>(configuration.GetValue <string>("InputPath")) .Where(x => x.Id64.HasValue) .ToList(); this.created = 0; this.total = 0; foreach (var partition in systems.Partition(1000)) { Handle(partition); } Console.WriteLine("Created: {0}", this.created); Console.WriteLine("Total: {0}", this.total); }
public void Invoke() { var bodies = new DumpFileReader <EdsmBody>(configuration.GetValue <string>("InputPath")) .Where(x => x.Type == "Star") .Where(x => x.DistanceToArrival <= short.MaxValue) .ToList(); var systemsToUpdate = new List <StarSystem>(); var c = 0; foreach (var body in bodies) { var isNeutron = body.SubType == "Neutron Star"; var isScoopable = SCOOPABLE_SUB_TYPES.Contains(body.SubType); if (!isNeutron && !isScoopable) { continue; } var system = repository.Get(body.SystemId64); if (system == null) { continue; } if (isNeutron) { c += 1; Console.WriteLine("{0,9} {1}", c, body.Name); if (!system.HasNeutron || body.DistanceToArrival < system.DistanceToNeutron) { system.HasNeutron = true; system.DistanceToNeutron = body.DistanceToArrival; systemsToUpdate.Add(system); } } if (isScoopable) { c += 1; Console.WriteLine("{0,9} {1}", c, body.Name); if (!system.HasScoopable || body.DistanceToArrival < system.DistanceToScoopable) { system.HasScoopable = true; system.DistanceToScoopable = body.DistanceToArrival; systemsToUpdate.Add(system); } } if (1000 <= systemsToUpdate.Count) { repository.Update(systemsToUpdate); systemsToUpdate.Clear(); } } if (systemsToUpdate.Any()) { repository.Update(systemsToUpdate); } }