private static void ProcurarAmigoProximo(out double latitude, out double longitude) { while (true) { Console.WriteLine(""); Console.WriteLine("Entre com a sua latitude:");; if (double.TryParse(Console.ReadLine(), out latitude)) { if (new Util.Localizacao().IsLatitude(latitude)) { break; } } Console.WriteLine(""); Console.WriteLine("Digite uma latitude valida"); } while (true) { Console.WriteLine(""); Console.WriteLine("Entre com a sua longitude:"); if (double.TryParse(Console.ReadLine(), out longitude)) { if (new Util.Localizacao().IsLongitude(longitude)) { break; } } Console.WriteLine(""); Console.WriteLine("Digite uma longitude valida"); } List <Model.Amigo> lstAmigos = new Model.Amigo().ListarAmigos(latitude, longitude); Console.WriteLine("Amigos mais proximos:"); foreach (var item in lstAmigos.OrderByDescending(o => o.Distancia).Take(3)) { Console.WriteLine("Amigo: " + item.Nome); Console.WriteLine("Distancia KM: " + item.Distancia); } }
public List <Amigo> ListarAmigos(double latitudeAtual, double longitudeAtual) { using (SqlConnection cnn = new SqlConnection(conexao)) { using (SqlCommand cmd = new SqlCommand( @"SELECT Nome, latitude, longitude FROM dbo.tbAmigo", cnn)) { cmd.CommandType = System.Data.CommandType.Text; cnn.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { List <Amigo> lstAmigo = new List <Amigo>(); while (dr.Read()) { Amigo objAmigo = new Amigo(); objAmigo.Nome = Convert.ToString(dr["Nome"] == DBNull.Value ? "" : dr["Nome"]); objAmigo.Latitude = Convert.ToDouble(dr["Latitude"] == DBNull.Value ? "" : dr["Latitude"]); objAmigo.Longitude = Convert.ToDouble(dr["Longitude"] == DBNull.Value ? "" : dr["Longitude"]); objAmigo.Distancia = Convert.ToDouble(new Util.Localizacao().CalculateDistanceInKilometer( latitudeAtual, longitudeAtual, objAmigo.Latitude, objAmigo.Longitude)); lstAmigo.Add(objAmigo); } return(lstAmigo); } } } }