Süntaks:
- Lambda väljend: (parameetrid) => avaldis
- 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.