Kuidas teha vasakpoolseid välimisi liitekohti – LINQ C#-s

Kuidas Teha Vasakpoolseid Valimisi Liitekohti Linq C S



Vasakpoolsest tabelist ja paremast tabelist vastavate kirjete kuvamiseks SQL-is on vasakpoolne välimine liitmine teatud tüüpi liitumisoperatsioon, mida kasutatakse. LINQ-is saab vasakpoolset välimist liitumist teostada meetodite GroupJoin() ja SelectMany() abil. Selles artiklis käsitletakse põhjalikult vasakpoolsete väliste ühenduste teostamist LINQ-is C# abil.

Kuidas teha LINQ-is vasakpoolseid välimisi liite, kasutades C#

LINQ-is vasakpoolse välimise ühendamise tegemiseks võite kasutada meetodit GroupJoin() kahe jada ühendamiseks ühisel võtmel ja seejärel tulemuse tasandamiseks kasutada meetodit SelectMany(). Siin on näide:







süsteemi kasutamine;
kasutades System.Linq;

klassi programm
{
staatiline tühimik Peamine ( )
{
var vasak = uus [ ] { 1 , 2 , 3 } ;
var right = uus [ ] { 2 , 3 , 4 } ;
var result = left.GroupJoin (
õige,
l = > l,
r = > r,
( l, r ) = > uus { Vasak = l, Parem = r.DefaultIfEmpty ( ) } )
.Valige Paljud (
lr = > lr.Parem.Vali (
r = > uus { Vasak = lr. Vasak, Parem = r } ) ) ;
igaühele ( var ese sisse tulemus )
{
Console.WriteLine ( '{0} {1}' , üksus.Vasak, üksus.Parem ) ;
}
}
}



See kood teostab vasakpoolse välise ühenduse kahele vasakule ja paremale massiivile ning prindib tulemuse konsooli. Meetod GroupJoin() teostab liitumise ja Vali palju() meetodit kasutatakse tulemuse tasandamiseks. Lõpuks prinditakse tulemus konsooli, kasutades foreach-silmust ja funktsiooni WriteLine().







Siin on veel üks näide, mis demonstreerib väljajäetud liitumiste kasutamist, kuvades vastavate töötajate nimed ja nende vastavad osakonnad. Igale töötajale on igale osakonnale määratud number, mida seejärel kasutatakse vastava osakonna sobitamiseks vastava töötajaga, siin on selle täielik kood:

süsteemi kasutamine;
kasutades System.Collections.Generic;
kasutades System.Linq;

nimeruum TeieNimeruum
{
klassi programm
{
staatiline tühimik Peamine ( string [ ] args )
{
Nimekiri < Töötaja nimi > töötajad = uus nimekiri < Töötaja nimi >
{
uus Töötajanimi { Id = 1 , Nimi = 'ise' , Osakonna ID = 1 } ,
uus Töötajanimi { Id = 2 , Nimi = 'John' , Osakonna ID = 2 } ,
uus Töötajanimi { Id = 3 , Nimi = 'Kevin' , Osakonna ID = 2 } ,
uus Töötajanimi { Id = 4 , Nimi = 'Bob' , Osakonna ID = 3 }
} ;

Nimekiri < osakond > osakonnad = uus nimekiri < osakond >
{
uus osakond { Id = 1 , Nimi = 'Sisu kirjutamine' } ,
uus osakond { Id = 2 , Nimi = 'Turundus' } ,
uus osakond { Id = 3 , Nimi = 'Insenerid' }
} ;

var query = töötaja nimest sisse töötajad
liituda osakond sisse osakonnad
töötaja nimi.OsakonnaId võrdub osakonnaga.Id osakonnarühmaks
osakonnast sisse osakondGroup.DefaultIfEmpty ( )
vali uus { Töötajanimi = töötajanimi.Nimi, Osakonnanimi = osakond?.Nimi ?? 'Mitte ükski' } ;

igaühele ( oli tulemus sisse päring )
{
Console.WriteLine ( $ 'Töötajanimi: {tulemus.Töötajanimi}, osakond: {tulemus.Osakonnanimi}' ) ;
}
}
}

klassi Töötajanimi
{
avalik int Id { saada; seatud ; }
avalik string Nimi { saada; seatud ; }
avalik int Osakonna ID { saada; seatud ; }
}

klassi osakond
{
avalik int Id { saada; seatud ; }
avalik string Nimi { saada; seatud ; }
}
}



Kõigepealt antakse näidisandmed, mis sisaldavad töötaja nime ja osakondade nimesid ning seejärel antakse igaühele vastav number. Järgmisena tehakse liitumisoperatsioon join käsuga ja pärast seda salvestatakse tulemus muutuja nimega päringusse, järgmisena trükitakse for tsükliga vastavate töötajate nimed ja osakondade nimed ning koodi väljund on selline :

Järeldus

Vasakpoolne välimine liitumine on SQL-is tavaline toiming ja seda saab hõlpsasti teostada ka LINQ-i abil C#-s. Meetodite GroupJoin() ja SelectMany() abil saate ühisel võtmel põhinevaid vasakpoolseid väliseid liite teha kahes järjestuses. Kuigi LINQ-i vasakpoolsete väliste liitumiste sooritamise süntaks võib olla algajatele raskesti mõistetav, on see võimas ja paindlik keel, mis võimaldab hõlpsalt täita keerulisi päringuid.