//Calcula a distancia entre as pessoas private void calcDist(Amigo _amigo1, Amigo _amigo2) { float xA, xB, yA, yB; xA = _amigo1.latitude; xB = _amigo2.latitude; yA = _amigo1.longitude; yB = _amigo2.longitude; this.distancia = (float)Math.Sqrt(Math.Pow(xB - xA, 2) + Math.Pow(yB - yA, 2)); }
public List <Amigo> listarTodos() { List <Amigo> lstAmigos = new List <Amigo>(); try { using (SqlConnection connection = new SqlConnection(CtrlConnections.getStringConexao)) { connection.Open(); using (SqlCommand command = new SqlCommand()) { command.Connection = connection; command.CommandText = "select nome, latitude, longitude from amigo"; SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Amigo amigo = new Amigo() { nome = reader["nome"] == DBNull.Value ? string.Empty : reader["nome"].ToString(), longitude = reader["longitude"] == DBNull.Value ? 0 : float.Parse(reader["longitude"].ToString()), latitude = reader["latitude"] == DBNull.Value ? 0 : float.Parse(reader["latitude"].ToString()) }; lstAmigos.Add(amigo); } } connection.Close(); } } catch (Exception ex) { } return(lstAmigos); }
public List <Amigo> listarAmigosProximos(string _nome) { List <Amigo> lstAmigos = this.listarTodos(); Amigo programador = lstAmigos.Where <Amigo>(x => x.nome.Equals(_nome)).Single <Amigo>(); List <Amigo> lstDistancias = new List <Amigo>(); foreach (Amigo amigo in lstAmigos) { if (amigo != programador) { amigo.calcDist(programador, amigo); lstDistancias.Add(amigo); } } //Ordena a distancia da menor para a maior lstDistancias.Sort(delegate(Amigo amigo1, Amigo amigo2) { return(amigo1.distancia.CompareTo(amigo2.distancia)); }); return(lstDistancias.Take(3).ToList()); }