/// <summary> /// Removes entries in the main file that are in the secondary /// </summary> /// <param name="main">The path to the main file.</param> /// <param name="secondary">The path to the secondary file.</param> /// <param name="target">The path to the target file.</param> /// <param name="messageHandler">The message handler.</param> /// <returns></returns> public async Task Remove(string main, string secondary, string target, IMessageHandler messageHandler) { await WorkOnTwoFiles(main, secondary, target, messageHandler, "", (main, sec) => { var result = new CsvGamesList(); foreach (var me in main.Games) { if (!sec.Games.Any(se => se.Name.Equals(me.Name, StringComparison.InvariantCultureIgnoreCase))) { result.Add(me); } } return(result); }); }
/// <summary> /// Keeps files that are listed in both files /// </summary> /// <param name="main">The path to the main file.</param> /// <param name="secondary">The path to the secondary file.</param> /// <param name="target">The path to the target file.</param> /// <param name="messageHandler">The message handler.</param> public async Task Keep(string main, string secondary, string target, IMessageHandler messageHandler) { await WorkOnTwoFiles(main, secondary, target, messageHandler, "Filter entries in a CSV files", (main, sec) => { var result = new CsvGamesList(); foreach (var me in main.Games) { // keep entries from the main file that also exist in the secondary if (sec.Games.Any(se => se.Name == me.Name)) { result.Add(me); } } return(result); }); }
/// <summary> /// Merges the specified main and secondary files to the target file. /// </summary> /// <param name="main">The path to the main file.</param> /// <param name="secondary">The path to the secondary file.</param> /// <param name="target">The path to the target file.</param> /// <param name="messageHandler">The message handler.</param> public async Task Merge(string main, string secondary, string target, IMessageHandler messageHandler) { await WorkOnTwoFiles(main, secondary, target, messageHandler, "Merge two CSV files", (main, sec) => { var result = new CsvGamesList(main.Games); foreach (var secg in sec.Games) { var maing = main.Games.Where(me => me.Name == secg.Name).FirstOrDefault(); if (maing == null) { // entry is in secondary but not main file: copy to result result.Add(secg); } else { // entry is already in main: copy additional data result.CopyEntry(secg); } } return(result); }); }