Vasemman ulomman liitoksen suorittaminen – LINQ C#:ssa

Vasemman Ulomman Liitoksen Suorittaminen Linq C Ssa



Vasemmanpuoleinen ulompi liitos on eräänlainen liitostoiminto, joka näyttää vastaavat tietueet vasemmasta ja oikeasta taulukosta SQL:ssä. LINQ:ssa vasen ulompi liitos voidaan suorittaa GroupJoin()- ja SelectMany()-menetelmillä. Tässä artikkelissa käsitellään laajasti vasen ulompien liitosten suorittamista LINQ:ssa C#:n avulla.

Vasemman ulomman liitoksen suorittaminen LINQ:ssa C#:n avulla

Jos haluat suorittaa vasemmanpuoleisen ulomman liitoksen LINQ:ssa, voit käyttää GroupJoin()-menetelmää yhdistämään kaksi sekvenssiä yhteisen avaimen perusteella ja sitten litistää tulos SelectMany()-menetelmällä. Tässä on esimerkki:







käyttämällä järjestelmää;
käyttäen System.Linq;

luokan ohjelma
{
staattinen tyhjyys Pää ( )
{
var vasen = uusi [ ] { 1 , 2 , 3 } ;
var right = uusi [ ] { 2 , 3 , 4 } ;
var tulos = left.GroupJoin (
oikein,
l = > l,
r = > r,
( l, r ) = > Uusi { Vasen = l, Oikea = r.DefaultIfEmpty ( ) } )
.SelectMany (
lr = > lr.Oikea.Valitse (
r = > Uusi { Vasen = lr. Vasen, Oikea = r } ) ) ;
jokaiselle ( var kohde sisään tulos )
{
Console.WriteLine ( '{0} {1}' , kohde.Vasen, kohde.Oikea ) ;
}
}
}



Tämä koodi suorittaa vasemman ulomman liitoksen kahdelle vasemmalle ja oikealle taulukolle ja tulostaa tuloksen konsoliin. GroupJoin()-menetelmä suorittaa liitoksen ja Valitse monta() menetelmää käytetään tuloksen tasoittamiseen. Lopuksi tulos tulostetaan konsoliin käyttämällä foreach-silmukkaa ja WriteLine()-funktiota:







Tässä on toinen esimerkki, joka havainnollistaa jätettyjen liitosten suorittamista näyttämällä vastaavien työntekijöiden nimet ja heidän asiaankuuluvat osastojensa. Jokaiselle työntekijälle on annettu jokaiselle osastolle numero, jota käytetään vastaavan osaston yhdistämiseen vastaavaan työntekijään, tässä on sen täydellinen koodi:

käyttämällä järjestelmää;
käyttäen System.Collections.Generic;
käyttäen System.Linq;

nimiavaruus YourNamespace
{
luokan ohjelma
{
staattinen tyhjyys Pää ( merkkijono [ ] args )
{
Lista < Työntekijän nimi > työntekijät = uusi lista < Työntekijän nimi >
{
uusi työntekijänimi { Id = 1 , Nimi = 'Hän itse' , Osastotunnus = 1 } ,
uusi työntekijänimi { Id = 2 , Nimi = 'John' , Osastotunnus = 2 } ,
uusi työntekijänimi { Id = 3 , Nimi = 'Kevin' , Osastotunnus = 2 } ,
uusi työntekijänimi { Id = 4 , Nimi = 'Bob' , Osastotunnus = 3 }
} ;

Lista < osasto > osastot = uusi luettelo < osasto >
{
uusi osasto { Id = 1 , Nimi = 'Sisällön kirjoittaminen' } ,
uusi osasto { Id = 2 , Nimi = 'Markkinointi' } ,
uusi osasto { Id = 3 , Nimi = 'Insinöörityö' }
} ;

var query = työntekijän nimestä sisään työntekijät
liittyä seuraan osasto sisään osastot
kohdassa työntekijän nimi.DepartmentId on sama kuin osasto.Id osaston ryhmään
osastolta sisään DepartmentGroup.DefaultIfEmpty ( )
valitse Uusi { Työntekijännimi = työntekijännimi.Nimi, OsastonNimi = osasto?.Nimi ?? 'Ei mitään' } ;

jokaiselle ( oli tulos sisään kysely )
{
Console.WriteLine ( $ 'Työntekijänimi: {result.Employeenname}, Osasto: {result.DepartmentName}' ) ;
}
}
}

luokan työntekijänimi
{
julkinen int Id { saada; aseta ; }
julkinen merkkijono Nimi { saada; aseta ; }
julkinen int Osastotunnus { saada; aseta ; }
}

luokan osasto
{
julkinen int Id { saada; aseta ; }
julkinen merkkijono Nimi { saada; aseta ; }
}
}



Ensin annetaan näytetieto, joka sisältää työntekijän nimen ja osastojen nimet ja sen jälkeen kullekin annetaan vastaava numero. Seuraavaksi join-operaatio suoritetaan join-komennolla ja sen jälkeen tulos tallennetaan muuttuja-nimiseen kyselyyn, seuraavaksi for-silmukalla tulostetaan vastaavien työntekijöiden nimet ja osastot ja koodin tulos on tällainen :

Johtopäätös

Vasen ulompi liitos on yleinen operaatio SQL:ssä, ja se voidaan myös suorittaa helposti käyttämällä LINQ:ta C#:ssa. GroupJoin()- ja SelectMany()-menetelmien avulla voit suorittaa vasemmanpuoleisia ulompia liitoksia kahdelle sekvenssille yhteisen avaimen perusteella. Vaikka LINQ:n vasemmanpuoleisten ulompien liitosten syntaksi voi olla vaikea ymmärtää aloittelijoille, se on tehokas ja joustava kieli, joka mahdollistaa monimutkaisten kyselyjen suorittamisen helposti.