Kyselyn syntaksi:
Katsotaanpa yleistä syntaksia:
alkaen iteraattori sisään Tietolähdevalitse iteraattori ;
Tässä:
- Data_Source voi olla luettelo, joka sisältää tiedot.
- Iteraattoria käytetään elementtien hakemiseen Data_Sourcesta.
Tietolähde
Tässä koko oppaassa käytämme seuraavaa tietueluetteloa tietolähteenä ja kaikki kyselyt koskevat vain tätä tietolähdettä. Varmista, että suoritat tämän koodin ympäristössäsi ja muokkaat kyselylauseita seuraavilla esimerkeillä yksitellen, joista aiomme keskustella:
käyttämällä Järjestelmä ;
käyttämällä System.Collections.Generic ;
käyttämällä System.Linq ;
käyttämällä System.Collections ;
julkinen luokkaa Laskelmat
{
julkinen staattinen mitätön Main ( )
{
// Listan luominen
Luettelo maa_hinnat = Uusi Lista ( ) {
// Lisää 5 tietuetta luetteloon
Uusi hinnat ( ) { kohde = 'Hedelmät' ,sijainti = 'USA' , määrä = 100 , kustannus = 345,78 } ,
Uusi hinnat ( ) { kohde = 'Pähkinät' ,sijainti = 'Intia' , määrä = 200 , kustannus = 3645,78 } ,
Uusi hinnat ( ) { kohde = 'muut' ,sijainti = 'UK' , määrä = 500 , kustannus = 90,68 } ,
Uusi hinnat ( ) { kohde = 'öljy' ,sijainti = 'USA' , määrä = 100 , kustannus = 345,78 } ,
Uusi hinnat ( ) { kohde = 'Chillit' ,sijainti = 'USA' , määrä = 10 , kustannus = 67,89 } ,
} ;
jokaiselle ( oli i sisään country_hinnat )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
}
}
julkinen luokkaa hinnat {
julkinen merkkijono kohde { saada ; aseta ; }
julkinen merkkijono sijainti { saada ; aseta ; }
julkinen int määrä { saada ; aseta ; }
julkinen kaksinkertainen kustannus { saada ; aseta ; }
}
Records:
Selitys:
1. Luo hinnat seuraavilla määritteillä:
2. Luo toinen luokka, joka on 'Laskelmat' päämenetelmällä ja luo country_prices lista viidellä tietueella.
Valitse
Pohjimmiltaan 'select' on projektiooperaattori, joka valitsee määritteet määritetystä tietolähteestä. Kysely alkaa sanalla 'from'. Sitten määritämme iteraattorin, joka toistuu tietolähteen yli. Sitten määritetään 'select'-operaattori.
Syntaksi:
Kaikki attribuutit: iteraattorista Data_Sourcessa valitse iteraattori;
Erityinen ominaisuus: iteratorista Data_Sourcessa valitse iterator.attribute;
Esimerkki 1:
Kirjoita kysely valitaksesi kaikki tietueet luettelosta.
käyttämällä Järjestelmä ;käyttämällä System.Collections.Generic ;
käyttämällä System.Linq ;
käyttämällä System.Collections ;
julkinen luokkaa Laskelmat
{
julkinen staattinen mitätön Main ( )
{
// Listan luominen
Luettelo maa_hinnat = Uusi Lista ( ) {
// Lisää 5 tietuetta luetteloon
Uusi hinnat ( ) { kohde = 'Hedelmät' ,sijainti = 'USA' , määrä = 100 , kustannus = 345,78 } ,
Uusi hinnat ( ) { kohde = 'Pähkinät' ,sijainti = 'Intia' , määrä = 200 , kustannus = 3645,78 } ,
Uusi hinnat ( ) { kohde = 'muut' ,sijainti = 'UK' , määrä = 500 , kustannus = 90,68 } ,
Uusi hinnat ( ) { kohde = 'öljy' ,sijainti = 'USA' , määrä = 100 , kustannus = 345,78 } ,
Uusi hinnat ( ) { kohde = 'Chillit' ,sijainti = 'USA' , määrä = 10 , kustannus = 67,89 } ,
} ;
//valitse operaattori kyselystä
oli tiedot = alkaen i sisään country_hinnat
valitse i ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
}
}
julkinen luokkaa hinnat {
julkinen merkkijono kohde { saada ; aseta ; }
julkinen merkkijono sijainti { saada ; aseta ; }
julkinen int määrä { saada ; aseta ; }
julkinen kaksinkertainen kustannus { saada ; aseta ; }
}
Lähtö:
Tässä emme määrittäneet mitään attribuuttia 'select'-kyselyssä. Haimme kaikki attribuutit kyselystä (data) 'foreach'-silmukan sisällä iteraattorin avulla.
Esimerkki 2:
Hanki nyt kohteet määrittämällä item-attribuutti 'select'-operaattorissa. Kysely on ' i:stä country_pricesissa valitse i.item ”.
//valitse operaattori saadaksesi item-attribuutin kyselyynoli tiedot = alkaen i sisään country_hinnat
valitse i . kohde ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i ) ;
}
Lähtö:
Rivi #21 – Rivi #29:
2. Missä
Jos haluat suodattaa tiedot joidenkin ehtojen perusteella, voit käyttää kyselyssä 'jos'-operaattoria 'select'-lauseen ohella. Mutta ensin käytetään operaattoria 'jos' ja sitten valitaan operaattori.
Syntaksi:
Katsotaanpa, kuinka 'jos'-operaattoria käytetään LINQ-kyselyn sisällä.
alkaen iteraattori sisään Tietolähdemissä kunto / s
valitse iteraattori . attribuutti ;
Esimerkki 1: Yksittäinen kunto
Suodatetaan tietueita nimikeattribuutin perusteella. Käytä ehtona yhtä kuin (==) -operaattoria 'jos'-operaattorissa ja vertaa iteraattoria 'chillisiin'. Joten 'Chilliin' liittyvät tietueet valitaan.
Kysely on ' alkaen i maa_hinnoissa
jossa i.item == 'Chillit'
valitse minä'
oli tiedot = alkaen i sisään country_hinnat
missä i . kohde == 'Chillit'
valitse i ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
Lähtö:
On vain yksi levy, jossa on 'Chillies'.
Rivi #21 – Rivi #30:
Esimerkki 2: Useita ehtoja
Suodatetaan tietueita sijainti- ja määrämääritteiden perusteella. Määrän tulee olla suurempi kuin 50 ja alle 300. Sijainnin tulee olla 'USA'.
Kysely on ' alkaen i maa_hinnoissa
jossa i.määrä > 50
jossa i.määrä < 300
jossa i.location == 'USA'
valitse minä'
oli tiedot = alkaen i sisään country_hinnat
missä i . määrä > viisikymmentä
missä i . määrä < 300
missä i . sijainti == 'USA'
valitse i ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
Lähtö:
Kaksi tietuetta vastasi aikaisempia ehtoja.
Rivi #21 – Rivi #32:
Esimerkki 3: Ja (&&) Operaattori
Voimme määrittää 'ja (&&)' -operaattorin määrittääksesi useita ehtoja kerralla. Jos kaikki ehdot ovat tosia, kysely palauttaa tietueet, jotka täyttävät kaikki ehdot.
Tässä esimerkissä valitsemme tietueet, jos määrä on suurempi kuin 20 ja hinta on 67,89.
Kysely on ' alkaen i maa_hinnoissa
jossa i.määrä < 20 && i.kustannus == 67,89
valitse minä'
missä i . määrä < kaksikymmentä && i . kustannus == 67,89
valitse i ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
Lähtö:
On vain yksi tietue, jonka määrä on alle 20 ja jonka hinta on 67,89
Rivi #21 – Rivi #29:
Esimerkki 4: Tai (||) Operaattori
Operaattoria 'tai (||)' käytetään myös useiden ehtojen määrittämiseen kerralla. Jos vähintään yksi ehto on tosi, ehdon täyttävät tietueet palautetaan.
Tässä esimerkissä valitsemme tietueet, jos määrä on suurempi kuin 300 tai sijainti on 'Tokio'.
Kysely on ' alkaen i, country_prices
jossa i.määrä > 300 || i.location == 'Tokio'
valitse minä'
missä i . määrä > 300 || i . sijainti == 'Tokio'
valitse i ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
Lähtö:
On vain yksi tietue, jonka määrä on suurempi kuin 300 (ensimmäinen ehto täyttyy).
Rivi #21 – Rivi #29:
3. Tilauksen mukaan
Jos haluat järjestää LINQ-kyselyn palauttamat tietueet nousevaan tai laskevaan järjestykseen minkä tahansa määritteen arvojen perusteella, voit käyttää kyselyssä 'järjestää'-operaattoria. Sinun on määritettävä tämä operaattori ennen 'select'-operaattoria.
Syntaksi:
Katsotaanpa, kuinka 'tilausperuste'-operaattoria käytetään LINQ-kyselyn sisällä.
Nousevassa järjestyksessä:
alkaen iteraattori sisään TietolähdeTilaus kirjoittaja iteraattori . attribuutti nouseva
valitse iteraattori ;
Laskeva järjestys:
alkaen iteraattori sisään TietolähdeTilaus kirjoittaja iteraattori . attribuutti laskeva
valitse iteraattori ;
Esimerkki 1: Nousevassa järjestyksessä
Valitse kaikki attribuutit tietolähteestä (luettelosta) ja palauta ne nousevassa järjestyksessä määrä-attribuutin arvojen perusteella.
Kysely on ' alkaen i, country_prices
i.määrän mukaan nousevassa järjestyksessä
valitse minä'
tilaa i . määrä nouseva
valitse i ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
Lähtö:
Rivi #21 – Rivi #29:
Esimerkki 2: Laskeva järjestys
Valitse kaikki attribuutit tietolähteestä (luettelosta) ja palauta ne laskevassa järjestyksessä kustannusmääritteen arvojen perusteella.
Kysely on ' alkaen i maa_hinnoissa
tilauksen mukaan i.cost laskeva
valitse minä'
tilaa i . kustannus laskeva
valitse i ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
Lähtö:
Rivi #21 – Rivi #29:
4. Rajoitus
Limit in SQL rajoittaa tietueita, jotka kysely palauttaa. Se palauttaa kyselyn palauttamat suosituimmat tietueet. LINQ:ssa voimme saavuttaa tämän käyttämällä Skip()-toimintoa Take()-operaattorin kanssa. Take() saa määritetyn määrän tietueita. Skip():tä käytetään määrittämään aloitustietueen numero. Tällä tavalla voimme saavuttaa LINQ:n 'raja'-toiminnallisuuden.
Syntaksi:
( alkaen iteraattori sisään Tietolähdevalitse iteraattori ) . Ohita ( n ) . Ota ( n ) ;
- Skip():tä käytetään tietueiden ohittamiseen ja jäljellä olevien tietueiden palauttamiseen. Se vaatii kokonaisluvun, joka määrittää ohitettavien elementtien määrän. Meidän tapauksessamme se on 0.
- Take() käytetään ottamaan 'n' määrä tietueita ensimmäisestä tietueesta.
Esimerkki:
Valitse kolme ensimmäistä tietuetta viidestä kyselyn palauttamasta tietueesta.
Kysely on ' (alkaen maa_hinnat
valitse i).Ohita(0).Ota(3)”
valitse i ) . Ohita ( 0 ) . Ota ( 3 ) ;
jokaiselle ( oli i sisään tiedot )
{
Konsoli . WriteLine ( i . kohde + ' ' + i . sijainti + ' ' + i . määrä + ' ' + i . kustannus ) ;
}
}
Lähtö:
Rivi #21 – Rivi #28:
Johtopäätös
Opimme kirjoittamaan kyselyt C# LINQ:lla, joka on samanlainen kuin SQL. Osana tätä opetusohjelmaa keskustelimme, kuinka 'select'-operaattoria käytetään tietueiden valitsemiseen tietolähteestä. Suodattaaksemme kyselyn palauttamat tietueet käytimme 'jos'-operaattoria määrittämällä ehdot. Sitten opimme lajittelemaan tietueita, jotka kysely palauttaa 'järjestysperuste'-operaattorilla. Lopuksi tietueiden rajoittamiseksi käytimme Skip()- ja Take()-operaattoreita.