Fazendo Inner Join e Left Join com Linq no ASP.NET

Relacionamentos é fundamental em um banco de dados. Com o aumento do uso de LINQ nas aplicações, com certeza vai ser também. Aprenda a fazer inner join e left join.

Por | @oficinadanet Programação

Relacionamentos é fundamental em um banco de dados. Com o aumento do uso de LINQ nas aplicações, com certeza vai ser também.

  • O Inner Join é quando existe dados de ambos os relacionamentos.
  • O Left Join pega os registros da Esquerda mesmo que os da Direita não existam.

Para começar vamos criar um Model, uma classe que “simula” uma tabela do banco de dados.
public struct Pessoa  
{  
    public Pessoa(int _codigo, string _nome, int _idade, char _sexo)  
    {  
        Codigo = _codigo;  
        Nome = _nome;  
        Idade = _idade;  
        Sexo = _sexo;  
    }  
    public int Codigo;  
    public string Nome;  
    public int Idade;  
    public Char Sexo;  
}  

Agora que nosso Model já está pronto, vamos criar os dados para teste, primeiro vamos fazer um Inner Join.
List Pessoas = new List();  
// Homens  
Pessoas.Add(new Pessoa(1, "Leonardo", 20, 'M'));  
Pessoas.Add(new Pessoa(2, "João", 17, 'M'));  
Pessoas.Add(new Pessoa(3, "Luis", 30, 'M'));  
// Mulheres  
Pessoas.Add(new Pessoa(1, "Tamires", 18, 'F'));  
Pessoas.Add(new Pessoa(2, "Maria", 15, 'F'));  
Pessoas.Add(new Pessoa(3, "Luiza", 28, 'F')); 

1 Homem para 1 mulher.

Agora vamos relacionar e mostrar na tela:
var lst = from h in Pessoas  
    join m in Pessoas on h.Codigo equals m.Codigo  
    where h.Sexo == 'M' && m.Sexo == 'F'  
    select new { Homem = h.Nome, Mulher = m.Nome };  
	  
foreach (var item in lst)  
    Console.WriteLine(String.Format("{0} - {1}", item.Homem, item.Mulher));  


O exemplo acima mostra o funcionamento simples do join no linq, agora vamos ao left join que é um pouco mais complicado:
List Homens = new List();  
// Homens  
Homens.Add(new Pessoa(1, "Leonardo", 20, 'M'));  
Homens.Add(new Pessoa(2, "João", 17, 'M'));  
Homens.Add(new Pessoa(3, "Luis", 30, 'M'));  
// Mulheres  
List Mulheres = new List();  
Mulheres.Add(new Pessoa(1, "Tamires", 18, 'F'));  
 
var lst = from h in Homens  
    join m in Mulheres on h.Codigo equals m.Codigo  
    into child  
    from m in child.DefaultIfEmpty(new Pessoa(h.Codigo, "Não possui", 0, 'F'))  
    where h.Sexo == 'M' && m.Sexo == 'F'  
    select new { Homem = h.Nome, Mulher = m.Nome };  
	  
foreach (var item in lst)  
    Console.WriteLine(String.Format("{0} - {1}", item.Homem, item.Mulher)); 


No exemplo acima é como se jogasse o “join” em uma tabela temporária, e para os registros que não tiveram relacionamento ele joga um item default.

Até a próxima!

Mais sobre: asp.net join mysql
Share Tweet
Comentários
Carregar comentários
Destaquesver tudo