/// <summary> /// Сравнение с другой папкой проекта пофайлово /// </summary> /// <param name="Dir2"></param> /// <returns>[0]-кол-во файлов новее чем в Dir2, [1]-старше чем в Dir2, /// [2]-новых файлов, [3]-отсутсвующих файлов по сравнению с Dir2</returns> public int[] CompairDir(Projdir Dir2) { int[] res = new int[2]; var files2 = Dir2.AllFiles(); //key - filepath //value - datetime var all = AllFiles(); foreach (var filedate in all) { var n0 = all.Count(x => files2.Any(c => c.Key == x.Key && c.Value < x.Value)); var n1 = all.Count(x => files2.Any(c => c.Key == x.Key && c.Value > x.Value)); var n2 = all.Count(x => !files2.Any(c => c.Key == x.Key)); var n3 = files2.Count(x => !all.Any(c => c.Key == x.Key)); } return(res); }
public List <Project> ReadAllProjects() { List <Project> Result = new List <Project>(); try { doc = XDocument.Load(Filepath); var projs = from pr in doc.Descendants(ProjXML) select new { NAME = pr.Attribute("name")?.Value, AutoSync = pr.Attribute(CONSTS.AutoSync)?.Value, Dirs = pr.Descendants(DirXML), ExcDirs = pr.Descendants(CONSTS.ExceptXML) }; foreach (var project in projs) //read each project { var p = new Project(project.NAME); if (project.AutoSync != null) { p.AutoSync = Boolean.Parse(project.AutoSync); } else { p.AutoSync = false; } foreach (var e in project.ExcDirs) { //Adding exceptions Dirs string exDir = e.Attribute(CONSTS.AttDirName).Value.ToString(); //Exception DIR path from XML file p.ExceptionDirs.Add(exDir); } foreach (var d in project.Dirs) { //read directory for the project var projDir = new Projdir(d.Attribute(CONSTS.AttDirName).Value.TrimEnd('\\'), p, d.Attribute(CONSTS.PC_XML).Value); p.AllProjectDirs.Add(projDir); } Result.Add(p); } return(Result); } catch (Exception) { return(Result); } }