Como realizar junções externas esquerdas – LINQ em C#

Como Realizar Juncoes Externas Esquerdas Linq Em C



Para exibir registros correspondentes da tabela esquerda e da tabela direita em SQL, a junção externa esquerda é um tipo de operação de junção que é usada. No LINQ, a junção externa esquerda pode ser executada usando os métodos GroupJoin() e SelectMany(), este artigo discutirá extensivamente a execução de junções externas esquerdas em LINQ usando C#.

Como executar junções externas esquerdas no LINQ usando C#

Para executar uma junção externa esquerda no LINQ, você pode usar o método GroupJoin() para unir duas sequências com base em uma chave comum e, em seguida, usar o método SelectMany() para achatar o resultado, aqui está um exemplo:







usando Sistema;
usando System.Linq;

programa de classe
{
vazio estático Principal ( )
{
var esquerda = novo [ ] { 1 , 2 , 3 } ;
var direita = novo [ ] { 2 , 3 , 4 } ;
var resultado = left.GroupJoin (
certo,
eu = > eu,
r = > r,
( eu, r ) = > novo { Esquerda = l, Direita = r.DefaultIfEmpty ( ) } )
.SelectMany (
lr = > lr.Direita.Selecionar (
r = > novo { Esquerda = lr.Esquerda, Direita = r } ) ) ;
para cada ( var item em resultado )
{
Console.WriteLine ( '{0} {1}' , item.Esquerda, item.Direita ) ;
}
}
}



Esse código executa uma junção externa esquerda em dois arrays esquerdo e direito e imprime o resultado no console. O método GroupJoin() realiza a junção e o método SelectMany() O método é usado para achatar o resultado. Por fim, o resultado é impresso no console usando um loop foreach e a função WriteLine():







Aqui está um outro exemplo que demonstra o uso de junções deixadas de fora, exibindo os respectivos nomes de funcionários e seus departamentos relevantes. Cada funcionário e cada departamento recebeu um número que é usado para corresponder o departamento relevante ao respectivo funcionário, aqui está o código completo para ele:

usando Sistema;
usando System.Collections.Generic;
usando System.Linq;

namespace SeuNamespace
{
programa de classe
{
vazio estático Principal ( corda [ ] argumentos )
{
Lista < Nome do empregado > empregados = nova lista < Nome do empregado >
{
novo nome de funcionário { Id = 1 , Nome = 'Ele mesmo' , DepartamentoId = 1 } ,
novo nome de funcionário { Id = 2 , Nome = 'John' , DepartamentoId = 2 } ,
novo nome de funcionário { Id = 3 , Nome = 'Kevin' , DepartamentoId = 2 } ,
novo nome de funcionário { Id = 4 , Nome = 'Prumo' , DepartamentoId = 3 }
} ;

Lista < Departamento > departamentos = nova lista < Departamento >
{
novo departamento { Id = 1 , Nome = 'Escrita de conteúdo' } ,
novo departamento { Id = 2 , Nome = 'Marketing' } ,
novo departamento { Id = 3 , Nome = 'Engenharia' }
} ;

var query = do nome do funcionário em funcionários
juntar departamento em departamentos
em EmployeesName.DepartmentId é igual a Department.Id em DepartmentGroup
do departamento em departamentoGroup.DefaultIfEmpty ( )
selecionar novo { EmployeenameName = Employeesname.Name, DepartmentName = departamento?.Name ?? 'Nenhum' } ;

para cada ( foi o resultado em consulta )
{
Console.WriteLine ( $ 'Employeename: {result.EmployeenameName}, Departamento: {result.DepartmentName}' ) ;
}
}
}

classe Employeename
{
ID int público { pegar; definir ; }
Nome da string pública { pegar; definir ; }
public int DepartmentId { pegar; definir ; }
}

departamento de classe
{
ID int público { pegar; definir ; }
Nome da string pública { pegar; definir ; }
}
}



Primeiro é dado um dado de amostra que contém o nome do funcionário e o nome dos departamentos e depois é dado um número respectivo a cada um. Em seguida, a operação de junção é realizada usando o comando join e depois disso o resultado é salvo em uma variável chamada query, em seguida, o loop for é usado para imprimir os nomes e departamentos dos respectivos funcionários e a saída do código será assim :

Conclusão

A junção externa esquerda é uma operação comum em SQL e também pode ser executada facilmente usando LINQ em C#. Usando os métodos GroupJoin() e SelectMany(), você pode executar junções externas esquerdas em duas sequências com base em uma chave comum. Embora a sintaxe para executar junções externas esquerdas no LINQ possa ser difícil de entender para iniciantes, é uma linguagem poderosa e flexível que permite que consultas complexas sejam executadas facilmente.