Hvordan utføre venstre ytre sammenføyninger - LINQ i C#

Hvordan utføre venstre ytre sammenføyninger - LINQ i C#

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)

Liste Ansatte = 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
;
Liste Avdelinger = 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.