C# LINQ lambda avaldised

C Linq Lambda Avaldised



Lambda avaldis C#-s võtab avaldised/tingimuslaused otse oma kehana ilma nimeta. Peame määrama parameetrid ja seejärel omistatakse sellele avaldised. Keelega integreeritud päringuga (LINQ) töötades võib teil tekkida nõue, et peate andmeallikas olevaid andmeid teisendama või teise andmeallika teiseks andmeallikaks. Selles juhendis näeme, kuidas filtreerida andmeallika kirjeid, määrates lambda-avaldise, ja valida kirjed andmeallikast.

Süntaks:

  1. Lambda väljend: (parameetrid) => avaldis
  2. Lambda avaldus: { tingimuslause1 lause2 … }

Näide 1:

Looge 'väetiste' loend, mis sisaldab viit stringi. Kasutage lambda-avaldist, mis tagastab kõik loendi stringid.

kasutades Süsteem ;
kasutades System.Linq ;
kasutades Süsteem.Kogud.Üldine ;

klass LambdaExpressionExample {

staatiline avalik tühine Peamine ( )
{

// Looge väetiste loend
Loetlege väetised = uus Nimekiri ( ) ;
väetised . Lisama ( 'uurea' ) ;
väetised . Lisama ( 'lämmastik' ) ;
väetised . Lisama ( 'kaalium' ) ;
väetised . Lisama ( 'Di-ammooniumfosfaat' ) ;
väetised . Lisama ( 'fosfor' ) ;

// Kasutage LambdaExpressioni kõigi väetiste valimiseks
oli tulemus = väetised . Valige ( inp1 => inp1 ) ;
igaühele ( oli i sisse tulemus )
{
konsool . WriteLine ( i ) ;
}

}
}

Väljund:









Selgitus:



1. Looge stringitüüpide loend nimega 'väetised'. Lisage sellesse loendisse viis stringi.

2. Kasutage kõigi väetiste valimiseks lambda avaldist. Siin kasutatakse väljendit koos operaatoriga „Select”. Väljend on inp1 => inp1. Seejärel kasutame tsüklit 'foreach', et kuvada lambda-avaldisega tagastatud stringid.





Näide 2:

Kasutage fosfaati sisaldavate väetiste valimiseks lambda-avaldist.

kasutades Süsteem ;
kasutades System.Linq ;
kasutades Süsteem.Kogud.Üldine ;

klass LambdaExpressionExample {

staatiline avalik tühine Peamine ( )
{

// Looge väetiste loend
Loetlege väetised = uus Nimekiri ( ) ;
väetised . Lisama ( 'uurea' ) ;
väetised . Lisama ( 'lämmastik' ) ;
väetised . Lisama ( 'orto - fosfaat' ) ;
väetised . Lisama ( 'Di-ammooniumfosfaat' ) ;
väetised . Lisama ( 'fosfor' ) ;

// Kasutage LambdaExpressionit, et valida väetised, mis sisaldavad - 'Phosphate'
oli tulemus = väetised . Kus ( inp1 => inp1 . Sisaldab ( 'Fosfaat' ) ) ;
igaühele ( oli i sisse tulemus )
{
konsool . WriteLine ( i ) ;
}

}
}

Väljund:



Seal on kaks stringi, mis sisaldavad 'fosfaati'.

Selgitus:

1. Looge stringitüüpide loend nimega 'väetised'. Lisage sellesse loendisse viis stringi.

2. Siin kasutatakse väljendit koos operaatoriga “Kus”. Väljend on inp1 => inp1.Contains(“fosfaat”). Seejärel kasutame tsüklit 'foreach', et kuvada lambda-avaldisega tagastatud stringid.

Näide 3:

Teeme loendi (order_quantity), mis sisaldab kolme tellimust. Määrake lambda-avaldis, et lisada igale tellimusele 5.

kasutades Süsteem ;
kasutades System.Linq ;
kasutades Süsteem.Kogud.Üldine ;

klass LambdaExpressionExample {

staatiline avalik tühine Peamine ( )
{

// Loo koguste loend
Loetle tellimuse_kogus = uus Nimekiri ( ) ;
Tellimuse Hulk . Lisama ( 5 ) ;
Tellimuse Hulk . Lisama ( 7 ) ;
Tellimuse Hulk . Lisama ( 8 ) ;

// Kasutage iga tellimuse puhul LambdaExpressioni 5-ni.
oli tulemus = Tellimuse Hulk . Valige ( inp1 => inp1 + 5 ) ;
igaühele ( oli i sisse tulemus )
{
konsool . WriteLine ( i ) ;
}

}
}

Väljund:

Loend [5,7,8] muudetakse [10,12,13]-ks.

Selgitus:

1. Koostage Integer tüüpi koguste loend.

2. Esmalt valime tellimused ja seejärel lisame igale tellimusele 5. Seega kasutatakse operaatorit “Select”. Väljend on inp1 => inp1 + 5.

Näide 4:

Looge sündmuse tüüpi loendi andmeallikas (kolme atribuudiga – sündmuse_nimi, sündmuse_olek ja sündmuse_eelarve) ja tagastage kirjed sündmuse_eelarvega, mis on suurem kui 5000.

kasutades Süsteem ;
kasutades System.Linq ;
kasutades Süsteem.Kogud.Üldine ;

// Looge klass nimega - 'Sündmuse_allikas' 5 sündmusega.
avalik klass Sündmuse_allikas
{
avalik staatiline tühine Peamine ( )
{
// Sündmuste loend
IList sündmused = uus Nimekiri ( ) {
uus Sündmus ( ) { Sündmuse_nimi = 'Tehniline laager' ,Sündmuse_olek = 'Planeeritud' ,Sündmus_Eelarve = 10 000 } ,
uus Sündmus ( ) { Sündmuse_nimi = 'Turunduslaager' ,Sündmuse_olek = 'Lõpetatud' ,Sündmus_Eelarve = 5000 } ,
uus Sündmus ( ) { Sündmuse_nimi = 'muu' ,Sündmuse_olek = 'Planeeritud' ,Sündmus_Eelarve = 1000 } ,
uus Sündmus ( ) { Sündmuse_nimi = 'Poliitika' ,Sündmuse_olek = 'Planeeritud' ,Sündmus_Eelarve = 13 000 } ,
uus Sündmus ( ) { Sündmuse_nimi = 'Finants' ,Sündmuse_olek = 'Lõpetatud' ,Sündmus_Eelarve = 20 000 } ,
} ;

//Sündmus_Eelarve suurem kui 5000.
oli tulemus = sündmused . Kus ( inp1 => inp1 . Sündmus_eelarve > 5000 ) ;
igaühele ( oli i sisse tulemus ) {
konsool . WriteLine ( 'NAME: ' + i . Sündmuse_nimi + 'OLEK:' + i . Sündmuse_olek + 'EELARVE:' + i . Sündmus_eelarve ) ;
}
}
}

avalik klass Sündmus {
avalik string Sündmuse_nimi { saada ; seatud ; }
avalik string Sündmuse_olek { saada ; seatud ; }
avalik int Sündmus_eelarve { saada ; seatud ; }
}

Väljund:

Sündmuste loendis on kolm kirjet, mille Event_Budget on suurem kui 5000.

Selgitus:

1. Esiteks loome kolme atribuudiga klassi “Event”.

2. Seejärel koostame viie sündmuse loendi.

3. Kasutades inp1 => inp1.Sündmus_Eelarve > 5000 lambda avaldis, valime kirjed, mille Event_Budget on suurem kui 5000.

Näide 5:

Kasutage eelmist koodi ja muutke lambda avaldist. Tagasta sündmused sündmuse_nimega, mis lõpeb sõnaga 'Camp' ja sündmuse_olekuga, mis on 'Planeeritud'.

//Lambda avaldis – sündmuse_nimi lõpeb sõnaga 'Camp' ja sündmuse_olek on 'Planeeritud'.
oli tulemus = sündmused . Kus ( inp1 => inp1 . Sündmuse_nimi . Lõpeb koos ( 'laager' ) && inp1 . Sündmuse_olek == 'Planeeritud' ) ;
igaühele ( oli i sisse tulemus ) {
konsool . WriteLine ( 'NAME: ' + i . Sündmuse_nimi + 'OLEK:' + i . Sündmuse_olek + 'EELARVE:' + i . Sündmus_eelarve ) ;
}

Väljund:

On ainult üks rekord, mis vastab mõlemale tingimusele.

Selgitus:

Siin täpsustame lambda-avaldises kaks tingimust. Operaatorit && (ja) kasutatakse kahe tingimuse tõeseks muutmiseks. Esimene tingimus kasutab meetodit EndsWith(), et kontrollida, kas string lõpeb antud stringiga. Teine tingimus kasutab operaatorit „Võrdlus” (==), et kontrollida, kas mõlemad väärtused on võrdsed või mitte.

Järeldus

C#-s võtab lambda-avaldis avaldised/tingimuslaused oma kehana ilma nimeta. Peame täpsustama parameetrid. Seejärel määratakse sellele väljendid. Põhimõtteliselt kasutatakse neid kirjete filtreerimiseks antud andmeallikast, elementide teisendamiseks ja elementide valimiseks andmeallikast/jadast. Selles juhendis käsitlesime viit erinevat näidet, mis valivad, filtreerivad ja teisendavad elemente lambda-avaldise abil.