Päringu süntaks:
Vaatame üldist süntaksit:
alates iteraator sisse Andmeallikasvali iteraator ;
Siin:
- Andmeallikas võib olla loend, mis sisaldab andmeid.
- Iteraatorit kasutatakse elementide toomiseks andmeallikast.
Andmeallikas
Kogu selles juhendis kasutame andmeallikana järgmist kirjete loendit ja kõiki päringuid rakendatakse ainult sellele andmeallikale. Veenduge, et käitate seda koodi oma keskkonnas ja muutke päringulauseid ükshaaval järgmiste näidetega, mida me arutame:
kasutades Süsteem ;
kasutades Süsteem.Kogud.Üldine ;
kasutades System.Linq ;
kasutades Süsteem.Kogud ;
avalik klass Arvutused
{
avalik staatiline tühine Peamine ( )
{
// Nimekirja koostamine
Loetle riigi_hinnad = uus Nimekiri ( ) {
// Lisage loendisse 5 kirjet
uus Hinnad ( ) { üksus = 'Puuviljad' , asukoht = 'USA' , kogus = 100 , maksumus = 345,78 } ,
uus Hinnad ( ) { üksus = 'Pähklid' , asukoht = 'India' , kogus = 200 , maksumus = 3645,78 } ,
uus Hinnad ( ) { üksus = 'Teised' , asukoht = 'UK' , kogus = 500 , maksumus = 90,68 } ,
uus Hinnad ( ) { üksus = 'õli' , asukoht = 'USA' , kogus = 100 , maksumus = 345,78 } ,
uus Hinnad ( ) { üksus = 'tšillid' , asukoht = 'USA' , kogus = 10 , maksumus = 67,89 } ,
} ;
igaühele ( oli i sisse riigi_hinnad )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
}
}
avalik klass Hinnad {
avalik string üksus { saada ; seatud ; }
avalik string asukoht { saada ; seatud ; }
avalik int kogus { saada ; seatud ; }
avalik kahekordne kulu { saada ; seatud ; }
}
Rekordid:
Selgitus:
1. Looge hinnad järgmiste atribuutidega.
2. Loo teine klass, mis on põhimeetodiga “Arvutused” ja koosta viie kirjega country_prices nimekiri.
Valige
Põhimõtteliselt on 'select' projektsioonioperaator, mis valib atribuudid määratud andmeallikast. Päring algab sõnaga 'from'. Seejärel määrame iteraatori, mis itereerib andmeallikas. Seejärel määratakse operaator “select”.
Süntaks:
Kõik atribuudid: iteraatorist Andmeallikas vali iteraator;
Konkreetne atribuut: iteraatorist Andmeallikas valige iterator.attribute;
Näide 1:
Kirjutame päringu, et valida loendist kõik kirjed.
kasutades Süsteem ;kasutades Süsteem.Kogud.Üldine ;
kasutades System.Linq ;
kasutades Süsteem.Kogud ;
avalik klass Arvutused
{
avalik staatiline tühine Peamine ( )
{
// Nimekirja koostamine
Loetle riigi_hinnad = uus Nimekiri ( ) {
// Lisage loendisse 5 kirjet
uus Hinnad ( ) { üksus = 'Puuviljad' , asukoht = 'USA' , kogus = 100 , maksumus = 345,78 } ,
uus Hinnad ( ) { üksus = 'Pähklid' , asukoht = 'India' , kogus = 200 , maksumus = 3645,78 } ,
uus Hinnad ( ) { üksus = 'Teised' , asukoht = 'UK' , kogus = 500 , maksumus = 90,68 } ,
uus Hinnad ( ) { üksus = 'õli' , asukoht = 'USA' , kogus = 100 , maksumus = 345,78 } ,
uus Hinnad ( ) { üksus = 'tšillid' , asukoht = 'USA' , kogus = 10 , maksumus = 67,89 } ,
} ;
//valige päringus operaator
oli andmeid = alates i sisse riigi_hinnad
vali i ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
}
}
avalik klass Hinnad {
avalik string üksus { saada ; seatud ; }
avalik string asukoht { saada ; seatud ; }
avalik int kogus { saada ; seatud ; }
avalik kahekordne kulu { saada ; seatud ; }
}
Väljund:
Siin ei määranud me päringus „select” ühtegi atribuuti. Tõime iteraatori abil kõik päringu (andmete) atribuudid foreach-tsükli seest.
Näide 2:
Nüüd hankige üksused, määrates operaatori 'select' sees atribuudi item. Päring on ' i-st riigist_hinnad valige i.item ”.
//valige operaator, et saada päringus üksuse atribuutoli andmeid = alates i sisse riigi_hinnad
vali i . üksus ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i ) ;
}
Väljund:
Rida # 21 – rida # 29:
2. Kus
Kui soovite andmeid mõne tingimuse/tingimuste alusel filtreerida, võite päringus kasutada operaatorit „kus” koos „select”-klausliga. Kuid kõigepealt kasutatakse operaatorit “kus” ja seejärel määratakse operaator.
Süntaks:
Vaatame, kuidas kasutada LINQ-päringu sees operaatorit „kus”.
alates iteraator sisse Andmeallikaskus tingimus / s
vali iteraator . atribuut ;
Näide 1: Üksik seisund
Filtreerime kirjed üksuse atribuudi alusel. Kasutage tingimusena võrdne (==) operaatorit operaatoris 'kus' ja võrrelge iteraatorit 'tšilliga'. Seega on valitud plaadid, mis on seotud 'tšilliga'.
Päring on ' alates i riigist_hinnad
kus i.item == 'tšillid'
vali mina'
oli andmeid = alates i sisse riigi_hinnad
kus i . üksus == 'tšillid'
vali i ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
Väljund:
“Tšilli” elemendiga on ainult üks plaat.
Rida # 21 – rida # 30:
Näide 2: Mitu tingimust
Filtreerime kirjeid asukoha ja koguse atribuutide alusel. Kogus peaks olema suurem kui 50 ja väiksem kui 300. Asukoht peaks olema 'USA'.
Päring on ' alates i riigist_hinnad
kus i.kogus > 50
kus i.kogus <300
kus i.location == 'USA'
vali mina'
oli andmeid = alates i sisse riigi_hinnad
kus i . kogus > viiskümmend
kus i . kogus < 300
kus i . asukoht == 'USA'
vali i ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
Väljund:
Eelmistele tingimustele vastavaid rekordeid on kaks.
Rida # 21 – rida # 32:
Näide 3: Ja (&&) operaator
Saame määrata operaatori 'ja (&&)', et määrata korraga mitu tingimust. Kui kõik tingimused on tõesed, tagastab päring kõigile tingimustele vastavad kirjed.
Selles näites valime kirjed, kui kogus on suurem kui 20 ja maksumus on 67,89.
Päring on ' alates i riigist_hinnad
kus i.kogus < 20 && i.kulu == 67,89
vali mina'
kus i . kogus < kakskümmend && i . kulu == 67,89
vali i ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
Väljund:
On ainult üks rekord, mille kogus on alla 20 ja maksumus 67,89
Rida # 21 – rida # 29:
Näide 4: Või (||) operaator
Operaatorit „või (||)” kasutatakse ka mitme tingimuse korraga määramiseks. Kui vähemalt üks tingimus on tõene, tagastatakse sellele tingimusele vastavad kirjed.
Selles näites valime kirjed, kui kogus on suurem kui 300 või asukoht on 'Tokyo'.
Päring on ' alates i riigist_hinnad
kus i.kogus > 300 || i.location == 'Tokyo'
vali mina'
kus i . kogus > 300 || i . asukoht == 'Tokyo'
vali i ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
Väljund:
On ainult üks kirje, mille kogus on suurem kui 300 (esimene tingimus on vastavuses).
Rida # 21 – rida # 29:
3. Tellimuse järgi
Kui soovite korraldada LINQ-päringu tagastatud kirjed kasvavas või kahanevas järjekorras, lähtudes mis tahes atribuudi väärtustest, saate päringus kasutada operaatorit „järjekorra alusel”. Peate määrama selle operaatori enne operaatorit 'select'.
Süntaks:
Vaatame, kuidas kasutada LINQ-päringus operaatorit 'järjekorra järgi'.
Kasvav järjestus:
alates iteraator sisse Andmeallikastellida kõrval iteraator . atribuut tõusev
vali iteraator ;
Kahanev järjekord:
alates iteraator sisse Andmeallikastellida kõrval iteraator . atribuut laskuv
vali iteraator ;
Näide 1: Kasvav järjekord
Valige andmeallikast (loendist) kõik atribuudid ja tagastage need kasvavas järjekorras, lähtudes atribuudi koguse väärtustest.
Päring on ' alates i riigist_hinnad
järjestus i.koguse järgi kasvav
vali mina'
tellida i järgi . kogus tõusev
vali i ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
Väljund:
Rida # 21 – rida # 29:
Näide 2: Kahanev järjekord
Valige andmeallikast (loendist) kõik atribuudid ja tagastage need kahanevas järjekorras kuluatribuudi väärtuste alusel.
Päring on ' alates i riigist_hinnad
tellimuse järgi i.kulu kahanevalt
vali mina'
tellida i järgi . kulu laskuv
vali i ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
Väljund:
Rida # 21 – rida # 29:
4. Piirang
SQL-i piirang piirab päringu tagastatavate kirjete arvu. See tagastab päringu poolt tagastatud peamised kirjed. LINQ-is saame selle saavutada, kasutades käsku Skip() koos Take() operaatoriga. Take() saab määratud arvu kirjeid. Skip() kasutatakse kirje algusnumbri määramiseks. Sel viisil saame LINQ-is saavutada 'limiidi' funktsionaalsuse.
Süntaks:
( alates iteraator sisse Andmeallikasvali iteraator ) . Vahele jätma ( n ) . Võtke ( n ) ;
- Skip() kasutatakse kirjete vahelejätmiseks ja ülejäänud kirjete tagastamiseks. See võtab täisarvu, mis määrab vahele jäetavate elementide arvu. Meie puhul on see 0.
- Take() kasutatakse 'n' arvu kirjete võtmiseks esimesest kirjest.
Näide:
Valige päringu tagastatud viiest kirjest kolm esimest kirjet.
Päring on ' (alates i riigist_hinnad
vali i).Jäta vahele(0).Võta(3)”
vali i ) . Vahele jätma ( 0 ) . Võtke ( 3 ) ;
igaühele ( oli i sisse andmeid )
{
konsool . WriteLine ( i . üksus + ' ' + i . asukoht + ' ' + i . kogus + ' ' + i . kulu ) ;
}
}
Väljund:
Rida 21 – rida 28:
Järeldus
Õppisime, kuidas kirjutada päringuid C# LINQ-is, mis on sarnane SQL-iga. Selle õpetuse osana arutasime, kuidas kasutada andmeallikast kirjete valimiseks operaatorit „select”. Päringuga tagastatud kirjete filtreerimiseks kasutasime tingimuste täpsustamiseks operaatorit „kus”. Seejärel õppisime, kuidas sorteerida kirjeid, mis päringuga tagastatakse operaatoriga 'järjekorra alusel'. Lõpuks kasutasime kirjete piiramiseks operaatoreid Skip () ja Take ().