Cum se efectuează îmbinări exterioare din stânga - LINQ în C#

Cum Se Efectueaza Imbinari Exterioare Din Stanga Linq In C



Pentru a afișa înregistrările care se potrivesc din tabelul din stânga și din tabelul din dreapta în SQL, îmbinarea exterioară din stânga este un tip de operație de îmbinare care este utilizat. În LINQ, îmbinarea exterioară stângă poate fi efectuată folosind metodele GroupJoin() și SelectMany(), acest articol va discuta pe larg despre realizarea îmbinărilor exterioare stânga în LINQ folosind C#.

Cum se efectuează îmbinări exterioare stânga în LINQ folosind C#

Pentru a efectua o îmbinare exterioară stângă în LINQ, puteți utiliza metoda GroupJoin() pentru a uni două secvențe bazate pe o cheie comună și apoi utilizați metoda SelectMany() pentru a aplatiza rezultatul, iată un exemplu:







folosind System;
folosind System.Linq;

Programul clasei
{
gol static Principal ( )
{
var left = nou [ ] { 1 , 2 , 3 } ;
var right = nou [ ] { 2 , 3 , 4 } ;
var rezultat = left.GroupJoin (
dreapta,
l = > eu
r = > r,
( l, r ) = > nou { Stânga = l, Dreapta = r.DefaultIfEmpty ( ) } )
.Selectați multe (
lr = > lr.Dreapta.Selectați (
r = > nou { Stânga = lr. Stânga, Dreapta = r } ) ) ;
pentru fiecare ( var item în rezultat )
{
Consolă.WriteLine ( „{0} {1}” , element.Stânga, articol.Dreapta ) ;
}
}
}



Acest cod efectuează o îmbinare exterioară stângă pe două matrice stânga și dreapta și imprimă rezultatul pe consolă. Metoda GroupJoin() efectuează unirea și SelectMany() metoda este utilizată pentru a aplatiza rezultatul. În cele din urmă, rezultatul este tipărit pe consolă folosind o buclă foreach și funcția WriteLine():







Iată un alt exemplu care demonstrează utilizarea efectuării de asocieri lăsate afară prin afișarea numelor respectivelor angajați și a departamentelor lor relevante. Fiecărui angajat fiecărui departament i s-a atribuit un număr care este apoi folosit pentru a potrivi departamentul relevant cu angajatul respectiv, iată codul complet al acestuia:

folosind System;
folosind System.Collections.Generic;
folosind System.Linq;

namespace YourNamspace
{
Programul clasei
{
gol static Principal ( şir [ ] argumente )
{
Listă < Numele angajatului > angajati = lista noua < Numele angajatului >
{
nou nume de angajat { Id = 1 , Nume = 'Se' , DepartmentId = 1 } ,
nou nume de angajat { Id = 2 , Nume = 'Ioan' , DepartmentId = 2 } ,
nou nume de angajat { Id = 3 , Nume = 'Kevin' , DepartmentId = 2 } ,
nou nume de angajat { Id = 4 , Nume = 'Bob' , DepartmentId = 3 }
} ;

Listă < Departament > departamente = listă nouă < Departament >
{
Departamentul nou { Id = 1 , Nume = „Scrierea conținutului” } ,
nou Departament { Id = 2 , Nume = 'Marketing' } ,
nou Departament { Id = 3 , Nume = 'Inginerie' }
} ;

var query = de la numele angajatului în angajati
a te alatura departament în departamente
on employeename.DepartmentId este egal cu departamentul.Id în departamentGroup
din departament în DepartmentGroup.DefaultIfEmpty ( )
Selectați nou { EmployeenameName = nume angajat.Nume, DepartmentName = departament?.Nume ?? 'Nici unul' } ;

pentru fiecare ( a fost rezultatul în interogare )
{
Consolă.WriteLine ( $ „Employeename: {result.EmployeenameName}, Departament: {result.DepartmentName}” ) ;
}
}
}

clasa Nume angajat
{
public int Id { obține; a stabilit ; }
șir public Nume { obține; a stabilit ; }
public int DepartmentId { obține; a stabilit ; }
}

Departamentul de clasă
{
public int Id { obține; a stabilit ; }
șir public Nume { obține; a stabilit ; }
}
}



Mai întâi este dat un eșantion de date care conține numele angajaților și numele departamentelor și apoi este dat un număr corespunzător fiecăruia. În continuare, operația de unire este efectuată folosind comanda join și după aceea rezultatul este salvat într-o variabilă numită interogare, apoi bucla for este folosită pentru a tipări numele și departamentele angajaților respectivi și rezultatul codului va fi astfel :

Concluzie

Left outer join este o operație comună în SQL și poate fi, de asemenea, efectuată cu ușurință folosind LINQ în C#. Folosind metodele GroupJoin() și SelectMany(), puteți efectua îmbinări exterioare stângi pe două secvențe bazate pe o cheie comună. Deși sintaxa pentru efectuarea îmbinărilor externe stângi în LINQ poate fi dificil de înțeles pentru începători, este un limbaj puternic și flexibil care permite efectuarea cu ușurință a interogărilor complexe.