public void CalculateConflict() { ConflictList = new List <DocumentDiff>(); AddList = new List <string>(); ResultDict = OriginalDict.ToDictionary(k => k.Key, k => k.Value); foreach (var key in NewDict.Keys) { List <string> existingKeys = FindExistingRelatedKeys(key); if (OriginalDict.ContainsKey(key)) { //skip , since the original dict has been manually edited, we don't want new records to mess up existing synonyms. continue; } else if (existingKeys.Count != 0) { //add this to "TO BE DECIDED" list, let user decide what to do ConflictList.Add(new DocumentDiff { OldValue = existingKeys.Select(p => $"{OriginalDict[p]}=>{p}").ToList(), NewValue = $"{NewDict[key]}=>{key}" }); } else { //add to "TO BE ADDED" list, let user decide whether add it or skip it AddList.Add($"{NewDict[key]}=>{key}"); } } }
public List <string> FindExistingRelatedKeys(string key) { return(OriginalDict.Where(p => p.Value.Split(',').Contains(key)) .Select(p => p.Key).ToList()); }