示例#1
0
        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);
        }