Kako izvesti lijeve vanjske spojeve – LINQ u C#

Kako Izvesti Lijeve Vanjske Spojeve Linq U C



Za prikaz podudarnih zapisa iz lijeve i desne tablice u SQL-u, lijevo vanjsko spajanje je vrsta operacije spajanja koja se koristi. U LINQ-u, lijevo vanjsko spajanje može se izvesti pomoću metoda GroupJoin() i SelectMany(), ovaj će članak opširno raspravljati o izvođenju lijevih vanjskih spajanja u LINQ-u pomoću C#.

Kako izvesti lijeve vanjske spojeve u LINQ-u koristeći C#

Da biste izvršili lijevo vanjsko spajanje u LINQ-u, možete upotrijebiti metodu GroupJoin() za spajanje dvaju nizova na temelju zajedničkog ključa, a zatim upotrijebiti metodu SelectMany() za izravnavanje rezultata, evo primjera:







korištenje sustava;
koristeći System.Linq;

razreda Program
{
statička praznina Glavni ( )
{
prom. lijevo = novo [ ] { 1 , 2 , 3 } ;
prom. desno = novo [ ] { 2 , 3 , 4 } ;
var rezultat = lijevo.GroupJoin (
pravo,
l = > l,
r = > r,
( l, r ) = > novi { Lijevo = l, Desno = r. DefaultIfEmpty ( ) } )
.OdaberiMnogo (
lr = > lr.Desno.Odaberi (
r = > novi { Lijevo = lr. Lijevo, Desno = r } ) ) ;
za svakoga ( prom. stavka u proizlaziti )
{
Konzola.WriteLine ( '{0} {1}' , stavka.Lijevo, stavka.Desno ) ;
}
}
}



Ovaj kod izvodi lijevo vanjsko spajanje na dva niza lijevo i desno i ispisuje rezultat na konzolu. Metoda GroupJoin() izvodi spajanje, a SelectMany() metoda se koristi za izravnavanje rezultata. Konačno, rezultat se ispisuje na konzolu pomoću foreach petlje i funkcije WriteLine():







Evo još jednog primjera koji demonstrira upotrebu izvođenja izostavljenih spajanja prikazivanjem odgovarajućih imena zaposlenika i njihovih relevantnih odjela. Svakom zaposleniku je svakom odjelu dodijeljen broj koji se zatim koristi za povezivanje relevantnog odjela s dotičnim zaposlenikom, ovdje je potpuni kod za to:

korištenje sustava;
koristeći System.Collections.Generic;
koristeći System.Linq;

imenski prostor YourNamespace
{
razreda Program
{
statička praznina Glavni ( niz [ ] args )
{
Popis < Ime zaposlenika > zaposlenici = novi popis < Ime zaposlenika >
{
novo ime zaposlenika { Id = 1 , Ime = 'Sam' , ID odjela = 1 } ,
novo ime zaposlenika { Id = 2 , Ime = 'Ivan' , ID odjela = 2 } ,
novo ime zaposlenika { Id = 3 , Ime = 'Kevin' , ID odjela = 2 } ,
novo ime zaposlenika { Id = 4 , Ime = 'Bob' , ID odjela = 3 }
} ;

Popis < Odjel > odjeli = novi popis < Odjel >
{
novi Odjel { Id = 1 , Ime = 'Pisanje sadržaja' } ,
novi Odjel { Id = 2 , Ime = 'Marketing' } ,
novi Odjel { Id = 3 , Ime = 'Inženjering' }
} ;

var upit = od ime zaposlenika u zaposlenici
pridružiti odjelu u odjelima
on Emploeename.DepartmentId jednako department.Id u departmentGroup
iz odjela u DepartmentGroup.DefaultIfEmpty ( )
Izaberi novi { EmployeenameName = zaposlenika.Name, DepartmentName = odjel?.Name ?? 'ništa' } ;

za svakoga ( bio je rezultat u upit )
{
Konzola.WriteLine ( $ 'Ime zaposlenika: {result.EmployeenameName}, odjel: {result.DepartmentName}' ) ;
}
}
}

klasa Employeename
{
public int Id { dobiti; postaviti ; }
javni niz Naziv { dobiti; postaviti ; }
public int DepartmentId { dobiti; postaviti ; }
}

razredni odjel
{
public int Id { dobiti; postaviti ; }
javni niz Naziv { dobiti; postaviti ; }
}
}



Prvo se daje uzorak podataka koji sadrži ime zaposlenika i nazive odjela, a zatim se svakome dodjeljuje odgovarajući broj. Zatim se operacija spajanja izvodi pomoću naredbe join i nakon toga se rezultat sprema u varijablu pod nazivom query, zatim se for petlja koristi za ispis imena i odjela dotičnih zaposlenika, a izlaz koda bit će ovakav :

Zaključak

Lijevo vanjsko spajanje uobičajena je operacija u SQL-u, a može se jednostavno izvesti i pomoću LINQ-a u C#. Koristeći metode GroupJoin() i SelectMany(), možete izvoditi lijeve vanjske spojeve na dvije sekvence na temelju zajedničkog ključa. Iako sintaksu za izvođenje lijevih vanjskih spojeva u LINQ-u može biti teško razumjeti početnicima, to je moćan i fleksibilan jezik koji omogućuje jednostavno izvođenje složenih upita.