static public DiffResult ComputeDiff(Dictionary <string, List <NetworkFile> > _urls, Dictionary <string, List <string> > _locals) { DiffResult result = new DiffResult(); foreach (var pair in _locals) { result.OldLocals[pair.Key] = new List <string>(pair.Value); } foreach (KeyValuePair <string, List <NetworkFile> > pair in _urls) { string species = pair.Key.ToLower(); if (!_locals.ContainsKey(species)) { result.Missings[pair.Key] = pair.Value; } else { List <string> localImages = new List <string>(_locals[species]); foreach (NetworkFile netImage in pair.Value) { string imageName = netImage.Name.ToLower(); if (localImages.Contains(imageName)) { localImages.Remove(imageName); continue; } if (!result.Missings.ContainsKey(pair.Key)) { result.Missings[pair.Key] = new List <NetworkFile>(); } result.Missings[pair.Key].Add(netImage); } if (localImages.Count == 0) { result.OldLocals.Remove(species); } else { result.OldLocals[species] = localImages; } } } result.Count(); return(result); }