protected void BtnCargaInicial_Click(object sender, EventArgs e) { System.Data.DataSet _ds = new System.Data.DataSet(); System.Data.SqlClient.SqlDataAdapter _da = new System.Data.SqlClient.SqlDataAdapter("TodasLasMascotas", "Data Source=.; Initial Catalog = Veterinaria; Integrated Security = true"); _da.Fill(_ds, "Mascotas"); ViewState["Mascotas"] = _ds.Tables["Mascotas"]; GVMostrarDesdeBD.DataSource = (System.Data.DataTable)ViewState["Mascotas"]; GVMostrarDesdeBD.DataBind(); }
protected void BtnFiltrar4_Click(object sender, EventArgs e) { System.Data.DataSet _ds = new System.Data.DataSet(); System.Data.DataTable _tablaDuenios = null; System.Data.DataTable _tablaMascotas = null; //obtengo origen de datos dueños y lo muestro esta es la primera //es importante cual va primero porque agrupamos por la primera //queremos saber los dueños de las mascotas osea primero DUEñOS System.Data.SqlClient.SqlDataAdapter _daD = new System.Data.SqlClient.SqlDataAdapter("Select * From Dueños", "Data Source =.; Initial Catalog = Veterinaria;Integrated Security = True"); _daD.Fill(_ds, "Dueños"); _tablaDuenios = _ds.Tables["Dueños"]; GVMostrarDesdeBD.DataSource = _tablaDuenios; GVMostrarDesdeBD.DataBind(); //Obtengo origen de datos mascotas // System.Data.SqlClient.SqlDataAdapter _daM = new System.Data.SqlClient.SqlDataAdapter("Select * From Mascotas", "Data Source =.; Initial Catalog = Veterinaria;Integrated Security = True"); _daM.Fill(_ds, "Mascotas"); _tablaMascotas = _ds.Tables["Mascotas"]; var resultado = from unRegistroD in _tablaDuenios.Select() //es importante cual va primero porque agrupamos por la primera //queremos saber los dueños de las mascotas osea primero DUEñOS join unRegistroM in _tablaMascotas.Select() //es de mascotas ahora la fuente de datos porque cruzamos con dueños on unRegistroD["IdDueño"] equals unRegistroM["IdDueño"] //los juntamos por la pk de dueños y la fk de mascotas group unRegistroD by unRegistroD["NomDueño"] //agrupamos por el nombre de dueños que esta en la tabla dueños into tablaRes //tenemos que crear algo en donde meter el resultado select new { NomDueño = tablaRes.First()["NomDueño"], //first devuelve el primer valor del grupo,este elemento es un dataRow porque linq tiene dataRow CantidaM = tablaRes.Count() //me devuelve la cantidad de elementos que tiene para ese dueño }; //el select es un objeto anonimo a partir de los datos que tengo //me va a devolver tantos grupos como se hayan armado las consultas ! //en el objeto anonimo saco los valores que quiero de cada grupo //Ejecuta la consulta LBResultado.Items.Clear(); foreach (var unReg in resultado) { LBResultado.Items.Add(unReg.NomDueño.ToString() + " ( " + unReg.CantidaM.ToString() + " ) "); } }