Kako izvesti leve zunanje spoje – LINQ v C#

Kako Izvesti Leve Zunanje Spoje Linq V C



Za prikaz ujemajočih se zapisov iz leve in desne tabele v SQL je levo zunanje združevanje vrsta operacije združevanja, ki se uporablja. V LINQ je levo zunanje združevanje mogoče izvesti z metodama GroupJoin() in SelectMany(), ta članek bo obširno obravnaval izvajanje levih zunanjih združevanj v LINQ z uporabo C#.

Kako izvesti leve zunanje spoje v LINQ z uporabo C#

Če želite izvesti levo zunanje združevanje v LINQ, lahko uporabite metodo GroupJoin(), da združite dve zaporedji na podlagi skupnega ključa, nato pa uporabite metodo SelectMany(), da izravnate rezultat, tukaj je primer:







z uporabo sistema;
z uporabo System.Linq;

razredni program
{
statična praznina Main ( )
{
var levo = novo [ ] { 1 , 2 , 3 } ;
var desno = novo [ ] { 2 , 3 , 4 } ;
var rezultat = levo.GroupJoin (
prav,
l = > l,
r = > r,
( l, r ) = > novo { Levo = l, Desno = r.DefaultIfEmpty ( ) } )
.SelectMany (
lr = > lr.Desno.Izberi (
r = > novo { Levo = lr. Levo, Desno = r } ) ) ;
za vsakogar ( var element v rezultat )
{
Console.WriteLine ( '{0} {1}' , postavka.Levo, postavka.Desno ) ;
}
}
}



Ta koda izvede levo zunanje združevanje dveh nizov levo in desno ter natisne rezultat na konzolo. Metoda GroupJoin() izvede združevanje in SelectMany() metoda se uporablja za izravnavo rezultata. Končno se rezultat natisne na konzolo z uporabo zanke foreach in funkcije WriteLine():







Tu je še en primer, ki prikazuje uporabo izvajanja izpuščenih združevanj s prikazom ustreznih imen zaposlenih in njihovih ustreznih oddelkov. Vsakemu zaposlenemu je vsakemu oddelku dodeljena številka, ki se nato uporabi za povezovanje ustreznega oddelka z zadevnim zaposlenim, tukaj je celotna koda zanj:

z uporabo sistema;
z uporabo System.Collections.Generic;
z uporabo System.Linq;

imenski prostor YourNamespace
{
razredni program
{
statična praznina Main ( vrvica [ ] args )
{
Seznam < Ime zaposlenega > zaposlenih = nov seznam < Ime zaposlenega >
{
novo ime zaposlenega { Id = 1 , Ime = 'sam' , ID oddelka = 1 } ,
novo ime zaposlenega { Id = 2 , Ime = 'Janez' , ID oddelka = 2 } ,
novo ime zaposlenega { Id = 3 , Ime = 'Kevin' , ID oddelka = 2 } ,
novo ime zaposlenega { Id = 4 , Ime = 'Bob' , ID oddelka = 3 }
} ;

Seznam < Oddelek > oddelki = nov seznam < Oddelek >
{
nov oddelek { Id = 1 , Ime = 'Pisanje vsebine' } ,
nov oddelek { Id = 2 , Ime = 'trženje' } ,
nov oddelek { Id = 3 , Ime = 'Inženiring' }
} ;

var query = from Emploeename v zaposlenih
pridruži se oddelek v oddelki
na Emploeename.DepartmentId je enako Department.Id v DepartmentGroup
iz oddelka v departmentGroup.DefaultIfEmpty ( )
izberite novo { EmployeenameName = EmployeeName.Name, DepartmentName = Department?.Name ?? 'brez' } ;

za vsakogar ( je bil rezultat v poizvedbo )
{
Console.WriteLine ( $ 'Ime zaposlenega: {result.EmployeenameName}, oddelek: {result.DepartmentName}' ) ;
}
}
}

razred Ime zaposlenega
{
public int Id { dobiti; set ; }
ime javnega niza { dobiti; set ; }
public int DepartmentId { dobiti; set ; }
}

razredni oddelek
{
public int Id { dobiti; set ; }
ime javnega niza { dobiti; set ; }
}
}



Najprej so podani vzorčni podatki, ki vsebujejo ime zaposlenega in imena oddelkov, nato pa se vsakemu dodeli ustrezna številka. Nato se operacija združevanja izvede z uporabo ukaza za združevanje in po tem se rezultat shrani v spremenljivko z imenom query, nato pa se uporabi zanka for za tiskanje imen in oddelkov ustreznih zaposlenih in izhod kode bo takšen :

Zaključek

Levo zunanje združevanje je običajna operacija v SQL in jo je mogoče enostavno izvesti tudi z uporabo LINQ v C#. Z uporabo metod GroupJoin() in SelectMany() lahko izvajate leva zunanja združevanja dveh zaporedij na podlagi skupnega ključa. Čeprav je sintaksa za izvajanje levih zunanjih združevanj v LINQ začetnikom morda težko razumljiva, je to zmogljiv in prilagodljiv jezik, ki omogoča enostavno izvajanje zapletenih poizvedb.