Cómo realizar uniones externas izquierdas – LINQ en C#

Como Realizar Uniones Externas Izquierdas Linq En C



Para mostrar los registros coincidentes de la tabla de la izquierda y la tabla de la derecha en SQL, la combinación externa izquierda es un tipo de operación de combinación que se utiliza. En LINQ, la combinación externa izquierda se puede realizar mediante los métodos GroupJoin() y SelectMany(), este artículo analizará detalladamente la realización de combinaciones externas izquierdas en LINQ mediante C#.

Cómo realizar uniones externas izquierdas en LINQ usando C#

Para realizar una combinación externa izquierda en LINQ, puede usar el método GroupJoin() para unir dos secuencias basadas en una clave común y luego usar el método SelectMany() para aplanar el resultado, aquí hay un ejemplo:







utilizando el sistema;
utilizando System.Linq;

programa de clase
{
vacío estático Principal ( )
    {
var izquierda = nuevo [ ] { 1 , 2 , 3 } ;
var derecha = nuevo [ ] { 2 , 3 , 4 } ;
var resultado = izquierda.Unirse al grupo (
bien,
yo = > yo,
r = > r,
            ( yo, r ) = > nuevo { Izquierda = l, Derecha = r.DefaultIfEmpty ( ) } )
.Seleccionarmuchos (
lr = > lr.Right.Select (
r = > nuevo { Izquierda = lr.Izquierda, Derecha = r } ) ) ;
para cada ( artículo variable en resultado )
        {
Consola.WriteLine ( '{0} {1}' , elemento.Izquierda, elemento.Derecha ) ;
        }
    }
}

 



Este código realiza una combinación externa izquierda en dos matrices izquierda y derecha e imprime el resultado en la consola. El método GroupJoin() realiza la unión y el SeleccionarMuchos() El método se utiliza para aplanar el resultado. Finalmente, el resultado se imprime en la consola mediante un bucle foreach y la función WriteLine():







Aquí hay otro ejemplo que demuestra el uso de realizar uniones omitidas al mostrar los nombres de los empleados respectivos y sus departamentos relevantes. A cada empleado de cada departamento se le ha asignado un número que luego se usa para hacer coincidir el departamento relevante con el empleado respectivo, aquí está el código completo para ello:

utilizando el sistema;
usando System.Collections.Generic;
utilizando System.Linq;

espacio de nombres YourNamespace
{
programa de clase
    {
vacío estático Principal ( cadena [ ] argumentos )
        {
Lista < Nombre de empleado > empleados = nueva lista < Nombre de empleado >
            {
nuevo nombre de empleado { identificación = 1 , Nombre = 'Él mismo' , IdDepartamento = 1 } ,
nuevo nombre de empleado { identificación = 2 , Nombre = 'Jhon' , IdDepartamento = 2 } ,
nuevo nombre de empleado { identificación = 3 , Nombre = 'Kevin' , IdDepartamento = 2 } ,
nuevo nombre de empleado { identificación = 4 , Nombre = 'Beto' , IdDepartamento = 3 }
            } ;

Lista < Departamento > departamentos = nueva lista < Departamento >
            {
nuevo departamento { identificación = 1 , Nombre = 'Redacción de contenidos' } ,
nuevo departamento { identificación = 2 , Nombre = 'Marketing' } ,
nuevo departamento { identificación = 3 , Nombre = 'Ingeniería' }
            } ;

var consulta = de nombre de empleado en empleados
                        unirse departamento en departamentos
en employeename.DepartmentId es igual a department.Id en departmentGroup
del departamento en departamentoGroup.DefaultIfEmpty ( )
                        seleccionar nuevo { NombreEmpleadoNombre = nombreEmpleado.Nombre, NombreDepartamento = Departamento?.Nombre ?? 'Ninguno' } ;

para cada ( fue el resultado en consulta )
            {
Consola.WriteLine ( $ 'Employeename: {result.EmployeenameName}, Departamento: {result.DepartmentName}' ) ;
            }
        }
    }

clase nombre de empleado
    {
ID público int. { conseguir; colocar ; }
cadena pública Nombre { conseguir; colocar ; }
public int DepartmentId { conseguir; colocar ; }
    }

departamento de clase
    {
ID público int. { conseguir; colocar ; }
cadena pública Nombre { conseguir; colocar ; }
    }
}

 



Primero se da una muestra de datos que contiene el nombre del empleado y el nombre de los departamentos y luego se le da un número respectivo a cada uno. A continuación, la operación de combinación se realiza utilizando el comando de combinación y después de eso, el resultado se guarda en una variable denominada consulta, a continuación, se utiliza el ciclo for para imprimir los nombres y departamentos de los empleados respectivos y la salida del código será así :

Conclusión

La combinación externa izquierda es una operación común en SQL y también se puede realizar fácilmente con LINQ en C#. Usando los métodos GroupJoin() y SelectMany(), puede realizar uniones externas izquierdas en dos secuencias basadas en una clave común. Aunque la sintaxis para realizar combinaciones externas izquierdas en LINQ puede ser difícil de entender para los principiantes, es un lenguaje potente y flexible que permite realizar consultas complejas con facilidad.