public List <Caso> calculaSimilaridadeLocal(Caso casoBase)
        {
            DaoCaso dao_caso = new DaoCaso();

            List <Caso> allCasos = dao_caso.getAll();

            //Hashtable sl = new Hashtable();

            PropertyInfo[] valCaso = casoBase.GetType().GetProperties();

            DaoAtributo at = new DaoAtributo();

            Atributo atb2 = new Atributo();

            Hashtable pesos = getPesos();

            List <Atributo> atbs = at.getAll();

            List <Caso> casoSimilar = new List <Caso>();

            double similaridadeLocal  = 0;
            double similaridadeGlobal = 0;
            double div = 0;

            for (int j = 0; j < allCasos.Count; j++)
            {
                Hashtable      similaridades = new Hashtable();
                PropertyInfo[] valTab        = allCasos[j].GetType().GetProperties();

                similaridadeLocal = 0;
                div = 0;

                for (int i = 3; i <= 37; i++)
                {
                    //atb.atributo = valTab[i].Name;

                    //Atributo atb2 = at.searchOther(atb);

                    atb2 = atbs.Find(a => a.atributo.Equals(valTab[i].Name.Replace('_', '-')));



                    if (valCaso[i].GetValue(casoBase).Equals("Desconhecido") || valTab[i].GetValue(allCasos[j]).Equals("Desconhecido"))
                    {
                        similaridadeLocal += 0;

                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                    else if (valCaso[i].GetValue(casoBase).Equals("Desconhecido") && valTab[i].GetValue(allCasos[j]).Equals("Desconhecido"))
                    {
                        similaridadeLocal += (1 * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                        div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                    else if (atb2.similaridade.Equals("Não"))
                    {
                        if (valCaso[i].Name.Equals(valTab[i].Name))
                        {
                            similaridadeLocal += (1 * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                            div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        }

                        similaridadeLocal += 0;

                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                    else
                    {
                        var atbVal    = valCaso[i].GetValue(casoBase);
                        var atbTabela = valTab[i].GetValue(allCasos[j]);

                        double valorCaso = valAtributo(valCaso[i].Name, (String)atbVal);
                        double valorTab  = valAtributo(valTab[i].Name, (String)atbTabela);

                        double[] maxMin = maxMinCol(valCaso[i].Name);

                        /*maxMin[0] = 1;
                        *  maxMin[1] = 3;*/

                        if (maxMin[0] != maxMin[1])
                        {
                            similaridadeLocal += (1 - ((Math.Abs(valorCaso - valorTab))) / (maxMin[1] - maxMin[0]) * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                            div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        }

                        else
                        {
                            similaridadeLocal += (1 - (Math.Abs(valorCaso - valorTab)) * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                            div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        }


                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                }

                //sl.Add(allCasos[j].caso, similaridades);

                similaridadeGlobal = similaridadeLocal / div;

                Caso c = allCasos[j];
                c.SimilaridadeGlobal = similaridadeGlobal;

                casoSimilar.Add(c);
            }


            return(casoSimilar);
        }