private async Task UpdateAsync() { IEnumerable <Common> GetModelsToUpdate() { foreach (var targetModel in _targetModels) { var sourceModel = _sourceModels .FirstOrDefault(model => model.InternalNumber == targetModel.InternalNumber); var isUpdated = false; if (sourceModel is not null) { if (targetModel.Name != sourceModel.Name) { isUpdated = true; targetModel.Name = sourceModel.Name; targetModel.Updated = DateTime.Now; } } if (isUpdated) { yield return(targetModel); } } } List <Common> modelsToUpdate = GetModelsToUpdate().ToList(); if (modelsToUpdate.Any()) { await _targetContext.BulkUpdateAsync(modelsToUpdate); } }