public String CompararEstadosMealy(IEnumerable <IGrouping <string, Estado> > grupo, Estado evaluado) { var estadoComparador = this.Estados; var estadoEvaluado = evaluado.Estados; int contadorResultado = 0; bool resultado = false; for (int i = 0; i < estadoComparador.Count(); i++) { var estCo1 = estadoComparador[i]; var estEv1 = estadoEvaluado[i]; bool continua = true; List <string> busqueda = new List <string>() { estCo1, estEv1 }; foreach (var estados in grupo) { if (estados.Count() >= busqueda.Count() && continua) { List <string> resultadoEstados = estados.Select(e => e.estado).ToList(); foreach (var t in resultadoEstados) { Console.WriteLine("resultado " + t); } if (ComparadorSubEstados(resultadoEstados, busqueda)) { contadorResultado++; Console.WriteLine("Contador resultado " + contadorResultado); continua = false; } else { if (estadoPendiente == null) { estadoPendiente = evaluado; Console.WriteLine("estadoPendiente " + evaluado.estado); } else if (!estadoPendiente.estado.Equals(evaluado.estado)) { Console.WriteLine("Entré"); var est = estadoPendiente.Estados.ToList(); if (estadoPendiente.ComparacionInterna(est, evaluado)) { Console.WriteLine("EVALUADO NAME " + evaluado.estado); contadorResultado = 2; // NombreGrupo = estado; break; } } } } } if (contadorResultado.Equals(Salidas.Count())) { Console.WriteLine("Resultado = true " + estCo1 + " , " + estEv1); resultado = true; } } if (resultado == true) { evaluado.NombreGrupo = estado; NombreGrupo = estado; } else { evaluado.NombreGrupo = evaluado.estado; } return(evaluado.NombreGrupo); }