InicioCiencia EducacionCombinar Datos Linq(Cláusula Join) C# - VB.Net

Combinar Datos Linq(Cláusula Join) C# - VB.Net

Ciencia Educacion9/22/2012

Siguiendo con ejemplos de linq ahora veremos como funciona la cláusula Join.

La cláusula Join sirve para establecer una relación entre 2 secuencias comparando sus claves.

Los programadores familiarizados con conceptos de bases de datos relacionales reconocerán la cláusula Join como Inner Join.

El ejemplo esta desarrollado en visual estudio 2010 en ambos lenguajes c# y vb.net pero en este post solo lo explicare en c# pueden encontrar el ejemplo en vb.net y descargarlo en ambos lenguajes desde mi blog al final dejo el link.

Veamos el diseño que tendrá nuestra aplicacion.



Ahora agregaremos 2 clases Categoría y Articulo.

public class Categoria
{
        public int CatId { get; set; }
        public string CatNombre { get; set; }
 
        public Categoria(int id, string nom)
        {
            CatId = id;
            CatNombre = nom;
        }
}


public class Articulo
{
        public int ArtId { get; set; }
        public string ArtNombre { get; set; }
        public double ArtPrecio { get; set; }
        public int CatId { get; set; }
 
        public Articulo(int id,string nom,double prec, int cat)
        {
            ArtId = id;
            ArtNombre = nom;
            ArtPrecio = prec;
            CatId = cat;
        }
}

Como podemos notar son 2 clases sencillas con algunas propiedades que usaremos para representar nuestros datos, importante notar que ambas clases tienen una propiedad en común CatId que es la que usaremos para establecer la relación entre ellas.

Ahora agreguemos algunos registros.

List<Categoria> categorialist = new List<Categoria>
{
     new Categoria(1, "Bebidas"),
     new Categoria(2, "Lacteos"),
     new Categoria(3, "Frutas")
};
 
List<Articulo> articulolist = new List<Articulo>
{
     new Articulo(1, "Cerveza negra Steeleye", 18.20, 1),
     new Articulo(2, "Queso Mozzarella", 34.50, 2),
     new Articulo(3, "Naranjas", 10.25, 3),
     new Articulo(4, "Cerveza Sasquatch", 15.00, 1),
     new Articulo(5, "Crema de Almejas", 9.75, 2),
     new Articulo(6, "Manzanas", 4.50, 3),
     new Articulo(7, "Vino Côte de Blaye", 250.25, 1),
     new Articulo(8, "Cerveza Heineken", 20.50, 1),
     new Articulo(9, "CocaCola", 5.75, 1)
};

Hemos agregado 3 categorías y 9 artículos donde cada articulo tiene un código de categoría al que pertenece.

Carguemos los artículos en el datagrid sin aplicar join y veremos como se muestran.

private void Form1_Load(object sender, EventArgs e)
{
     var query = from art in articulolist select art;
     dataGridView1.DataSource = query.ToList();
}




Lo que hemos hecho es cargar los artículos en el datagrid normalmente.

Ahora veamos como utilizar el Join de linq para que no nos muestre el código de categoría(CatId) si no que nos muestre el nombre de la categoría la que el articulo pertenece.

var query = from cat in categorialist
            join art in articulolist
            on cat.CatId equals art.CatId
            orderby art.ArtId ascending
            select new { Id = art.ArtId, Nombre = art.ArtNombre, Precio = art.ArtPrecio, Categoria = cat.CatNombre };
 
dataGridView1.DataSource = query.ToList();

Como verán tiene un gran parecido al inner join de sql donde por medio de la propiedad que tienen en común CatId podemos establecer la relación entre ambas clases y así poder consultar los campos que necesitemos.



Pueden descargar el ejemplo en ambos lenguajes c# y vb.net desde mi blog.
http://cristiantorresalfaro.blogspot.com/2012/09/combinar-datos-linqoperador-join-c-vbnet.html


Para todos los que tienen blog pueden seguirme y estar pendientes de mis nuevos artículos.

Datos archivados del Taringa! original
8puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

k
krizztorres🇦🇷
Usuario
Puntos0
Posts27
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.