CalDavSynchronizer.ProfileExportProcessor.MergePreservingSortOrder C# (CSharp) Method

MergePreservingSortOrder() private method

private MergePreservingSortOrder ( CalDavSynchronizer.Contracts.Options existingProfiles, CalDavSynchronizer.Contracts.Options profilesToImport, Action logger ) : CalDavSynchronizer.Contracts.Options[]
existingProfiles CalDavSynchronizer.Contracts.Options
profilesToImport CalDavSynchronizer.Contracts.Options
logger Action
return CalDavSynchronizer.Contracts.Options[]
    private Options[] MergePreservingSortOrder (Options[] existingProfiles, Options[] profilesToImport, Action<string> logger)
    {
      var mergedProfiles = existingProfiles.ToList ();

      foreach (var profileToImport in profilesToImport)
      {
        var existingProfile = mergedProfiles.FirstOrDefault (p => p.Id == profileToImport.Id);
        if (existingProfile == null)
        {
          logger($"Adding profile '{profileToImport.Name}'");
          mergedProfiles.Add (profileToImport);
        }
        else
        {
          logger ($"Replacing profile '{profileToImport.Name}'");
          var index = mergedProfiles.IndexOf (existingProfile);
          mergedProfiles.RemoveAt (index);
          mergedProfiles.Insert (index, profileToImport);
        }
      }

      return mergedProfiles.ToArray ();
    }
  }