For å vise matchende poster fra venstre tabell og høyre tabell i SQL er venstre ytre sammenføyning en type sammenføyningsoperasjon som brukes. I LINQ kan venstre ytre sammenføyning utføres ved hjelp av GroupJoin () og SelectMany () -metodene, denne artikkelen vil omfattende diskutere å utføre venstre ytre sammenføyninger i LINQ ved hjelp av C#.
Hvordan utføre venstre ytre sammenføyninger i LINQ ved hjelp av C#
For å utføre en venstre ytre sammenføyning i LINQ, kan du bruke GroupJoin () -metoden for å bli med i to sekvenser basert på en felles nøkkel og deretter bruke SelectMany () -metoden for å flate resultatet, her er et eksempel:
ved hjelp av system;
Bruke system.Linq;
Klasseprogram
statisk tomrom ()
var venstre = ny [] 1, 2, 3;
var høyre = ny [] 2, 3, 4;
var resultat = venstre.Groupjoin (
Ikke sant,
l => l,
r => r,
(l, r) => Ny venstre = l, høyre = r.StandardIfempty ())
.SelectMany (
LR => LR.Ikke sant.Plukke ut(
r => nytt venstre = lr.Venstre, høyre = r));
foreach (var element i resultat)
Konsoll.WritLine ("0 1", vare.Venstre, vare.Ikke sant);
Denne koden utfører en venstre ytre sammenføyning på to matriser til venstre og høyre, og skriver ut resultatet til konsollen. Groupjoin () -metoden utfører sammenføyningen, og SelectMany () Metoden brukes til å flate ut resultatet. Til slutt skrives resultatet til konsollen ved hjelp av en FOREACH LOOP og WritLine () -funksjonen:
Her er et annet eksempel som demonstrerer bruken av å utføre utelatte sammenføyninger ved å vise respektive ansattnavn og deres relevante avdelinger. Hver ansatt er hver avdeling har blitt tildelt et nummer som deretter brukes til å matche den aktuelle avdelingen for den respektive ansatte, her er den komplette koden for det:
ved hjelp av system;
Bruke system.Samlinger.Generisk;
Bruke system.Linq;
Navneområde Dittnamespace
Klasseprogram
statisk tomrom (streng [] args)
ListeAnsatte = ny liste
NYTT EMSTATION NAME Id = 1, Name = "Sam", DepartmentId = 1,
NYTT EMERSIKTEME id = 2, name = "Jhon", DepartmentId = 2,
NYTT EMERSIKTENNE id = 3, name = "Kevin", DepartmentId = 2,
NYTT EMSTATION NAME id = 4, name = "Bob", DepartmentId = 3
;
ListeAvdelinger = ny liste
Ny avdeling id = 1, name = "innholdsskriving",
Ny avdeling id = 2, name = "Marketing",
Ny avdeling id = 3, name = "Engineering"
;
var spørring = fra ansatte i ansatte
Bli med avdelingen i avdelinger
på EmployeeName.Departmentid er lik avdeling.ID i avdelingsgruppe
fra avdeling i avdelingsgruppe.StandardIfempty ()
Velg Ny EmployeTeNAmename = EmployeTeName.Navn, avdelingsnavn = avdeling?.Navn ?? "Ingen" ;
Foreach (var resulterer i spørring)
Konsoll.WritLine ($ "EmployeeName: Resultat.EmployeTeNamename, avdeling: Resultat.Avdelingsnavn ");
klasse EmployeeName
public int ID get; sett;
offentlig strengnavn get; sett;
public int DepartmentId get; sett;
klasseavdeling
public int ID get; sett;
offentlig strengnavn get; sett;
Først blir det gitt et eksempel på at det inneholder ansattes navn og avdelinger og etterpå gis et respektive nummer til hver. Deretter blir Join -operasjonen utført ved å bruke Join -kommandoen, og etter det blir resultatet lagret i en variabel som heter Query, neste gang brukes for -loopen til å skrive ut navnene og avdelingene til de respektive ansatte, og utdataene til koden vil være slik denne :
Konklusjon
Venstre ytre sammenføyning er en vanlig operasjon i SQL, og kan også enkelt utføres ved hjelp av LINQ i C#. Ved hjelp av GroupJoin () og SelectMany () -metodene kan du utføre venstre ytre sammenføyninger på to sekvenser basert på en felles nøkkel. Selv om syntaks for å utføre venstre ytre sammenføyninger i LINQ kan være vanskelig å forstå for nybegynnere, er det et kraftig og fleksibelt språk som gjør det mulig å utføres komplekse spørsmål.