public async Task ImportFrom(string sourcePageUrl) { var importedPlayers = (await _playersProvider.GetPlayersAsync(sourcePageUrl)) .ToList(); var existedPlayers = (await _playersRepository.GetAllAsync()) .ToDictionary(p => p.MergedExternalId, p => p); foreach (var importedPlayer in importedPlayers) { if (existedPlayers.ContainsKey(importedPlayer.MergedExternalId)) { var existed = existedPlayers[importedPlayer.MergedExternalId]; importedPlayer.UpdateFrom(existed); } } await _playersRepository.InsertOrMergeAsync(importedPlayers); await _playersIntegration.SchedulePlayerProfilesUpdateAsync(importedPlayers); }