public List <string> EstruturasComuns(Dictionary <string, List <ObjetoComparacaoLista> > pLista1, Dictionary <string, List <ObjetoComparacaoLista> > pLista2, out List <string> estruturasSoNa1, out List <string> estruturasSoNa2) { List <string> estruturasComuns = new List <string>(); estruturasSoNa1 = new List <string>(); estruturasSoNa2 = new List <string>(); foreach (string estrutura1 in pLista1.Keys) { var tem = pLista2.FirstOrDefault(x => FuncoesUteis.ComparaNomeEstruturas(x.Key, estrutura1)); if (tem.Value == null) { estruturasSoNa1.Add(estrutura1); } else { estruturasComuns.Add(estrutura1); } } foreach (string estrutura2 in pLista2.Keys) { var tem = pLista1.FirstOrDefault(x => FuncoesUteis.ComparaNomeEstruturas(x.Key, estrutura2)); if (tem.Value == null) { estruturasSoNa2.Add(estrutura2); } } return(estruturasComuns); }
/// <summary> /// Compara as duas listas /// </summary> /// <param name="pCaminho1"></param> /// <param name="pCaminho2"></param> /// <param name="resultado"></param> /// <returns></returns> public bool CompararListas(string pCaminho1, string pCaminho2, out ObjetoResultadoComparacao resultado) { ObjetoCabecalho cabecalho = new ObjetoCabecalho(pCaminho1, pCaminho2); Dictionary <string, List <ObjetoComparacaoLista> > listaMateriais1 = CriaObjetosComparacaoLista(pCaminho1); Dictionary <string, List <ObjetoComparacaoLista> > listaMateriais2 = CriaObjetosComparacaoLista(pCaminho2); List <DivergenciaEntreEstruturaLista> divergenciasMesmaLista = new List <DivergenciaEntreEstruturaLista>(); divergenciasMesmaLista.AddRange(ComparaEstruturasUmaLista(listaMateriais1, "Lista Original")); divergenciasMesmaLista.AddRange(ComparaEstruturasUmaLista(listaMateriais2, "Lista Nova")); List <string> estruturasComuns = EstruturasComuns(listaMateriais1, listaMateriais2, out List <string> soNa1, out List <string> soNa2); resultado = new ObjetoResultadoComparacao(cabecalho, soNa1, soNa2, divergenciasMesmaLista); foreach (string estrutura in estruturasComuns) { var objeto1 = listaMateriais1.FirstOrDefault(x => FuncoesUteis.ComparaNomeEstruturas(x.Key, estrutura)); var objeto2 = listaMateriais2.FirstOrDefault(x => FuncoesUteis.ComparaNomeEstruturas(x.Key, estrutura)); resultado.ListaEstruturasComparadas.Add(ComparaEstruturas(objeto1.Value, objeto2.Value, estrutura)); } return(true); }