C# LINQ Lambda-lausekkeet

C Linq Lambda Lausekkeet



Lambda-lauseke C#:ssa ottaa lausekkeet/ehdolliset lauseet suoraan rungokseen ilman nimeä. Meidän on määritettävä parametrit ja sitten lausekkeet määritetään sille. Kun työskentelet Language Integrated Queryn (LINQ) kanssa, sinulla voi olla vaatimus, että sinun on muutettava tietolähteessä olevat tiedot tai muutettava yksi tietolähde toiseksi tietolähteeksi. Tässä oppaassa näemme, kuinka tietueet suodatetaan tietolähteestä määrittämällä lambda-lauseke ja valitaan tietueet tietolähteestä.

Syntaksi:

  1. Lambda ilmaisu: (parametrit) => lauseke
  2. Lambda-lausunto: { ehdollinen lauseke1 lauseke2 … }

Esimerkki 1:

Luo 'lannoitteiden' luettelo, jossa on viisi merkkijonoa. Käytä lambda-lauseketta, joka palauttaa kaikki merkkijonot luettelosta.

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

luokkaa LambdaExpressionEsimerkki {

staattinen julkinen mitätön Main ( )
{

// Luo luettelo lannoitteista
Listaa lannoitteet = Uusi Lista ( ) ;
lannoitteet . Lisätä ( 'urea' ) ;
lannoitteet . Lisätä ( 'typpi' ) ;
lannoitteet . Lisätä ( 'kalium' ) ;
lannoitteet . Lisätä ( 'Diammoniumfosfaatti' ) ;
lannoitteet . Lisätä ( 'fosfori' ) ;

// Valitse kaikki lannoitteet LambdaExpressionilla
oli tulos = lannoitteet . Valitse ( inp1 => inp1 ) ;
jokaiselle ( oli i sisään tulos )
{
Konsoli . WriteLine ( i ) ;
}

}
}

Lähtö:









Selitys:



1. Luo luettelo merkkijonotyypeistä nimeltä 'lannoitteet'. Lisää viisi merkkijonoa tähän luetteloon.

2. Käytä lambda-lauseketta valitaksesi kaikki lannoitteet. Tässä lauseketta käytetään 'Valitse'-operaattorin kanssa. Ilmaisu on inp1 => inp1. Sitten käytämme 'foreach' -silmukkaa näyttääksemme merkkijonot, jotka lambda-lauseke palauttaa.





Esimerkki 2:

Käytä lambda-lauseketta valitaksesi lannoitteet, jotka sisältävät 'fosfaattia'.

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

luokkaa LambdaExpressionEsimerkki {

staattinen julkinen mitätön Main ( )
{

// Luo luettelo lannoitteista
Listaa lannoitteet = Uusi Lista ( ) ;
lannoitteet . Lisätä ( 'urea' ) ;
lannoitteet . Lisätä ( 'typpi' ) ;
lannoitteet . Lisätä ( 'orto - fosfaatti' ) ;
lannoitteet . Lisätä ( 'Diammoniumfosfaatti' ) ;
lannoitteet . Lisätä ( 'fosfori' ) ;

// Valitse LambdaExpressionilla lannoitteet, jotka sisältävät - 'Fosfaatti'
oli tulos = lannoitteet . Missä ( inp1 => inp1 . Sisältää ( 'Fosfaatti' ) ) ;
jokaiselle ( oli i sisään tulos )
{
Konsoli . WriteLine ( i ) ;
}

}
}

Lähtö:



On olemassa kaksi merkkijonoa, jotka sisältävät 'fosfaatin'.

Selitys:

1. Luo luettelo merkkijonotyypeistä nimeltä 'lannoitteet'. Lisää viisi merkkijonoa tähän luetteloon.

2. Tässä lauseketta käytetään 'Missä'-operaattorin kanssa. Ilmaisu on inp1 => inp1.Contains('Fosfaatti'). Sitten käytämme 'foreach' -silmukkaa näyttääksemme merkkijonot, jotka lambda-lauseke palauttaa.

Esimerkki 3:

Otetaan luettelo (order_quantity), joka sisältää kolme tilausta. Määritä lambda-lauseke lisätäksesi 5 jokaiseen tilaukseen.

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

luokkaa LambdaExpressionEsimerkki {

staattinen julkinen mitätön Main ( )
{

// Luo määrien luettelo
Listaa tilausmäärä = Uusi Lista ( ) ;
tilaus_määrä . Lisätä ( 5 ) ;
tilaus_määrä . Lisätä ( 7 ) ;
tilaus_määrä . Lisätä ( 8 ) ;

// Käytä LambdaExpression arvoa 5 jokaisessa tilauksessa.
oli tulos = tilaus_määrä . Valitse ( inp1 => inp1 + 5 ) ;
jokaiselle ( oli i sisään tulos )
{
Konsoli . WriteLine ( i ) ;
}

}
}

Lähtö:

Lista [5,7,8] muunnetaan muotoon [10,12,13].

Selitys:

1. Luo Integer-tyyppisten määrien luettelo.

2. Valitsemme ensin tilaukset ja lisäämme sitten 5 jokaiseen tilaukseen. Joten 'Valitse'-operaattoria käytetään. Ilmaisu on inp1 => inp1 + 5.

Esimerkki 4:

Luo tapahtumatyyppinen luettelotietolähde (kolme attribuutilla – Tapahtuman_nimi, Tapahtuman_tila ja Tapahtuman_budjetti) ja palauta tietueet, joiden Tapahtuman_budjetti on suurempi kuin 5000.

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

// Luo luokka nimeltä - 'Event_Source', jossa on 5 tapahtumaa.
julkinen luokkaa Tapahtuman_lähde
{
julkinen staattinen mitätön Main ( )
{
// Tapahtumaluettelo
IList tapahtumia = Uusi Lista ( ) {
Uusi Tapahtuma ( ) { Tapahtuman nimi = 'Tekninen leiri' ,Tapahtuman_tila = 'Suunniteltu' ,Tapahtuma_budjetti = 10 000 } ,
Uusi Tapahtuma ( ) { Tapahtuman nimi = 'Markkinointileiri' ,Tapahtuman_tila = 'Valmis' ,Tapahtuma_budjetti = 5000 } ,
Uusi Tapahtuma ( ) { Tapahtuman nimi = 'muu' ,Tapahtuman_tila = 'Suunniteltu' ,Tapahtuma_budjetti = 1000 } ,
Uusi Tapahtuma ( ) { Tapahtuman nimi = 'Politiikka' ,Tapahtuman_tila = 'Suunniteltu' ,Tapahtuma_budjetti = 13 000 } ,
Uusi Tapahtuma ( ) { Tapahtuman nimi = 'Rahoittaa' ,Tapahtuman_tila = 'Valmis' ,Tapahtuma_budjetti = 20 000 } ,
} ;

//Event_Budget yli 5000.
oli tulos = Tapahtumat . Missä ( inp1 => inp1 . Tapahtuma_Budjetti > 5000 ) ;
jokaiselle ( oli i sisään tulos ) {
Konsoli . WriteLine ( 'NAME:' + i . Tapahtuman nimi + ' TILA: ' + i . Tapahtuman_tila + 'BUDJETTI:' + i . Tapahtuma_Budjetti ) ;
}
}
}

julkinen luokkaa Tapahtuma {
julkinen merkkijono Tapahtuman nimi { saada ; aseta ; }
julkinen merkkijono Tapahtuman_tila { saada ; aseta ; }
julkinen int Tapahtuma_Budjetti { saada ; aseta ; }
}

Lähtö:

Tapahtumaluettelossa on kolme tietuetta, joiden Event_Budget on suurempi kuin 5000.

Selitys:

1. Ensin luodaan 'Tapahtuma'-luokka, jossa on kolme attribuuttia.

2. Luomme sitten luettelon viidestä tapahtumasta.

3. Käyttämällä inp1 => inp1.Event_Budget > 5000 lambda-lauseke, valitsemme tietueet, joiden Event_Budget on suurempi kuin 5000.

Esimerkki 5:

Käytä edellistä koodia ja muuta lambda-lauseketta. Palauta tapahtumat Tapahtuman_nimi, joka päättyy 'leiri', ja Event_Status, joka on 'Suunniteltu'.

//Lambda-lauseke - Tapahtuman_nimi päättyy 'Camp' ja Tapahtuman_tila on 'Suunniteltu'.
oli tulos = Tapahtumat . Missä ( inp1 => inp1 . Tapahtuman nimi . Loppuu ( 'Leiri' ) && inp1 . Tapahtuman_tila == 'Suunniteltu' ) ;
jokaiselle ( oli i sisään tulos ) {
Konsoli . WriteLine ( 'NAME:' + i . Tapahtuman nimi + ' TILA: ' + i . Tapahtuman_tila + 'BUDJETTI:' + i . Tapahtuma_Budjetti ) ;
}

Lähtö:

On vain yksi tietue, joka täyttää molemmat ehdot.

Selitys:

Tässä määritämme kaksi ehtoa lambda-lausekkeessa. && (ja) -operaattoria käytetään tekemään kahdesta ehdosta tosi. Ensimmäinen ehto käyttää EndsWith()-menetelmää tarkistaakseen, päättyykö merkkijono annettuun merkkijonoon. Toinen ehto käyttää 'Vertailu'-operaattoria (==) tarkistaakseen, ovatko molemmat arvot samat vai eivät.

Johtopäätös

C#:ssa lambda-lauseke ottaa lausekkeet/ehdolliset lauseet rungokseen ilman nimeä. Meidän on määritettävä parametrit. Sitten lausekkeet määritetään sille. Periaatteessa näitä käytetään tietueiden suodattamiseen annetusta tietolähteestä, elementtien muuntamiseen ja elementtien valitsemiseen tietolähteestä/sekvenssistä. Tässä oppaassa käsittelimme viittä eri esimerkkiä, jotka valitsevat, suodattavat ja muuntavat elementtejä lambda-lausekkeen avulla.