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);
        }