public void AtenderPaciente(int especialidadDoc, DataGridView dtg) { string querySelect = "select IdPacienteCita As [Tarjeta del Paciente], Nombre, Apellido, Convert(date,FechaCita) As [Fecha de Cita] , Prioridad" + " From Cita cit " + " Inner Join Pacientes pa " + " ON pa.IdPaciente = cit.IdPacienteCita " + " where Especialidad = " + especialidadDoc + " and FechaCita = Convert(date,getdate())"; string queryCantidad = " select( select count (*) From Cita cit Inner Join Pacientes pa " + " ON pa.IdPaciente= cit.IdPacienteCita " + " where Especialidad = " + especialidadDoc + ") as [Cantidad]"; ConexionSqlServer cn = new ConexionSqlServer(); try { cn.abrir(); SqlCommand cmSelect = new SqlCommand(queryCantidad, cn.conexion); int cantidad = Convert.ToInt32(cmSelect.ExecuteScalar());//se tiene la cantidad de datos que deberá tener el monticulo cn.cerrar(); cn.abrir(); SqlCommand cmPacientes = new SqlCommand(querySelect, cn.conexion); SqlDataReader reader = cmPacientes.ExecuteReader(); Paciente[] pacien; pacien = new Paciente[cantidad]; Heap heap = new Heap(cantidad); int iterador = 0; while (reader.Read()) { Paciente pa = new Paciente(); pa.TarjetaPaciente = Convert.ToString(reader["Tarjeta del Paciente"]); pa.Nombre = Convert.ToString(reader["Nombre"]); pa.Apellido = Convert.ToString(reader["Apellido"]); pa.FechaCita = Convert.ToString(reader["Fecha de Cita"]); pa.Prioridad = Convert.ToInt32(reader["Prioridad"]); pacien[iterador] = pa; heap.Insertar(pacien[iterador]); MessageBox.Show(pacien[iterador].Nombre.ToString()); iterador++; } cn.cerrar(); List <Paciente> ordenado = new List <Paciente>(); for (int i = 0; i < iterador; i++) { ordenado.Add(heap.BorrarMin()); } dtg.DataSource = ordenado; } catch (Exception) { cn.cerrar(); MessageBox.Show("No se puede conectar a la base de datos"); } finally { cn.cerrar(); } }