Lekérdezések írása C# LINQ-ban

Lekerdezesek Irasa C Linq Ban



Az SQL-hez hasonlóan C# LINQ-ban is lehet lekérdezéseket írni a lekérdezés szintaxisával. Ezeket a lekérdezéseket a webes C# adatbázis-alkalmazásokban használják, hogy az adatbázisból megkapják az adatokat, és megjelenjenek a weben a harmadik fél felhasználók számára. Ebben az útmutatóban néhány, az SQL-hez hasonló LINQ-lekérdezést tárgyalunk. Ehhez létrehozunk egy lista adatforrást, és alkalmazzuk a benne lévő lekérdezéseket.

Lekérdezés szintaxisa:

Nézzük az általános szintaxist:

tól től iterátor ban ben Adatforrás
válassza ki iterátor ;

Itt:







  1. A Data_Source lehet az adatokat tartalmazó lista.
  2. Az iterátor az elemek adatforrásból való lekérésére szolgál.

Adatforrás

Ebben a teljes útmutatóban a következő rekordlistát használjuk adatforrásként, és az összes lekérdezést csak erre az adatforrásra alkalmazzuk. Győződjön meg arról, hogy ezt a kódot futtatja a környezetében, és egyenként módosítsa a lekérdezési utasításokat a következő példákkal, amelyeket tárgyalni fogunk:



segítségével Rendszer ;
segítségével System.Collections.Generic ;
segítségével System.Linq ;
segítségével System.Collections ;

nyilvános osztály Számítások
{
nyilvános statikus üres ( )
{
// Lista létrehozása
Lista country_prices = új Lista ( ) {

// 5 rekord hozzáadása a listához
új Árak ( ) { tétel = 'Gyümölcsök' ,elhelyezkedés = 'EGYESÜLT ÁLLAMOK' , Mennyiség = 100 , költség = 345,78 } ,
új Árak ( ) { tétel = 'dió' ,elhelyezkedés = 'India' , Mennyiség = 200 , költség = 3645,78 } ,
új Árak ( ) { tétel = 'Mások' ,elhelyezkedés = 'UK' , Mennyiség = 500 , költség = 90,68 } ,
új Árak ( ) { tétel = 'olaj' ,elhelyezkedés = 'EGYESÜLT ÁLLAMOK' , Mennyiség = 100 , költség = 345,78 } ,
új Árak ( ) { tétel = 'Chilli' ,elhelyezkedés = 'EGYESÜLT ÁLLAMOK' , Mennyiség = 10 , költség = 67,89 } ,
} ;


az egyes ( volt én ban ben country_prices )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;
}
}
}
nyilvános osztály Árak {
nyilvános húr tétel { kap ; készlet ; }
nyilvános húr elhelyezkedés { kap ; készlet ; }
nyilvános int Mennyiség { kap ; készlet ; }
nyilvános kettős költség { kap ; készlet ; }
}

Feljegyzések:







Magyarázat:

1. Hozza létre az árakat a következő attribútumokkal:

2. Hozzon létre egy másik osztályt, amely a „Számítások” a fő metódussal, és hozzon létre egy ország_ár listát öt rekordból.



Válassza ki

Alapvetően a „select” egy vetületi operátor, amely kiválasztja az attribútumokat a megadott adatforrásból. A lekérdezés a „from” szóval kezdődik. Ezután megadjuk azt az iterátort, amely az adatforráson keresztül iterál. Ezután a „select” operátor kerül megadásra.

Szintaxis:

Minden attribútum: iterator in Data_Source iterator kiválasztása;

Konkrét attribútum: a Data_Source iteratorból válassza ki az iterator.attribute elemet;

1. példa:

Írjunk lekérdezést az összes rekord kiválasztásához a listából.

segítségével Rendszer ;
segítségével System.Collections.Generic ;
segítségével System.Linq ;
segítségével System.Collections ;

nyilvános osztály Számítások
{
nyilvános statikus üres ( )
{
// Lista létrehozása
Lista country_prices = új Lista ( ) {

// 5 rekord hozzáadása a listához
új Árak ( ) { tétel = 'Gyümölcsök' ,elhelyezkedés = 'EGYESÜLT ÁLLAMOK' , Mennyiség = 100 , költség = 345,78 } ,
új Árak ( ) { tétel = 'dió' ,elhelyezkedés = 'India' , Mennyiség = 200 , költség = 3645,78 } ,
új Árak ( ) { tétel = 'Mások' ,elhelyezkedés = 'UK' , Mennyiség = 500 , költség = 90,68 } ,
új Árak ( ) { tétel = 'olaj' ,elhelyezkedés = 'EGYESÜLT ÁLLAMOK' , Mennyiség = 100 , költség = 345,78 } ,
új Árak ( ) { tétel = 'Chilli' ,elhelyezkedés = 'EGYESÜLT ÁLLAMOK' , Mennyiség = 10 , költség = 67,89 } ,
} ;

//operátor kiválasztása a lekérdezésben
volt adat = tól től én ban ben country_prices
válassza ki én ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}
}
}
nyilvános osztály Árak {
nyilvános húr tétel { kap ; készlet ; }
nyilvános húr elhelyezkedés { kap ; készlet ; }
nyilvános int Mennyiség { kap ; készlet ; }
nyilvános kettős költség { kap ; készlet ; }
}

Kimenet:

Itt nem adtunk meg semmilyen attribútumot a „select” lekérdezésben. Az iterátor segítségével a „foreach” cikluson belüli lekérdezésből (adatokból) lehívtuk az összes attribútumot.

2. példa:

Most szerezze be az elemeket az item attribútum megadásával a „select” operátoron belül. A lekérdezés:  ' az i-től az ország_árakban válassza ki az i.elemet ”.

//válassza ki az operátort az item attribútum lekérdezéséhez
volt adat = tól től én ban ben country_prices
válassza ki én . tétel ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én ) ;

}

Kimenet:

21. sor – 29. sor:

2. Hol

Ha bizonyos feltételek/feltételek alapján szeretné szűrni az adatokat, használhatja a „hol” operátort a lekérdezésben a „select” záradékkal együtt. De először a „hol” operátor kerül felhasználásra, majd a select operátor kerül megadásra.

Szintaxis:

Nézzük meg, hogyan kell használni a „hol” operátort a LINQ lekérdezésben.

tól től iterátor ban ben Adatforrás
ahol feltétel / s
válassza ki iterátor . tulajdonság ;

1. példa: Egyetlen állapot

Szűrjük a rekordokat az item attribútum alapján. Használja az egyenlő (==) operátort a „hol” operátorban feltételként, és hasonlítsa össze az iterátort a „Chillies”-vel. Tehát a „Chillies”-hez kapcsolódó rekordok vannak kiválasztva.

A lekérdezés ' i-től ország_árakban
ahol i.item == 'Chillies'
válassz én”

//válassza ki a rekordok szűrésének helyét
volt adat = tól től én ban ben country_prices
ahol én . tétel == 'Chilli'
válassza ki én ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}

Kimenet:

Csak egy rekord van a „Chillies” tétellel.

21. sor – 30. sor:

2. példa: Több feltétel

Szűrjük a rekordokat a hely és mennyiség attribútumok alapján. A mennyiségnek 50-nél nagyobbnak és 300-nál kisebbnek kell lennie. A helyszín legyen „USA”.

A lekérdezés ' i-től ország_árakban
ahol i.mennyiség > 50
ahol i.mennyiség < 300
ahol i.location == 'USA'
válassz én”

//több feltétel megadásával válassza ki a rekordok szűrésének helyét
volt adat = tól től én ban ben country_prices
ahol én . Mennyiség > ötven
ahol én . Mennyiség < 300
ahol én . elhelyezkedés == 'EGYESÜLT ÁLLAMOK'
válassza ki én ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}

Kimenet:

Két olyan rekord van, amely megfelelt az előző feltételeknek.

21. sor – 32. sor:

3. példa: És (&&) kezelő

Megadhatjuk az „és (&&)” operátort, hogy egyszerre több feltételt adjunk meg. Ha minden feltétel igaz, akkor a lekérdezés az összes feltételnek megfelelő rekordokat adja vissza.

Ebben a példában akkor jelöljük ki a rekordokat, ha a mennyiség nagyobb, mint 20, és a költség 67,89.

A lekérdezés ' i-től ország_árakban
ahol i.mennyiség < 20 && i.költség == 67,89
válassz én”

volt adat = tól től én ban ben country_prices
ahol én . Mennyiség < húsz && én . költség == 67,89
válassza ki én ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}

Kimenet:

Csak egy rekord van 20-nál kisebb mennyiséggel és 67,89-es költséggel

21. sor – 29. sor:

4. példa: Vagy (||) Üzemeltető

A „vagy (||)” operátor több feltétel egyidejű megadására is szolgál. Ha legalább egy feltétel igaz, akkor a feltételnek megfelelő rekordokat a rendszer visszaküldi.

Ebben a példában akkor választjuk ki a rekordokat, ha a mennyiség nagyobb, mint 300, vagy a hely „Tokió”.

A lekérdezés ' i-től ország_árakban
ahol i.mennyiség > 300 || i.location == 'Tokió'
válassz én”

volt adat = tól től én ban ben country_prices
ahol én . Mennyiség > 300 || én . elhelyezkedés == 'Tokió'
válassza ki én ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}

Kimenet:

Csak egy rekord van 300-nál nagyobb mennyiséggel (az első feltétel megfelel).

21. sor – 29. sor:

3. Rendelés:

Ha a LINQ-lekérdezés által visszaadott rekordokat az attribútumok bármelyikének értékei alapján növekvő vagy csökkenő sorrendbe szeretné rendezni, használhatja a „rendezés szerint” operátort a lekérdezésben. Ezt az operátort a „select” operátor előtt kell megadnia.

Szintaxis:

Nézzük meg, hogyan kell használni az „order by” operátort a LINQ lekérdezésben.

Növekvő sorrendben:

tól től iterátor ban ben Adatforrás
rendelés által iterátor . tulajdonság emelkedő
válassza ki iterátor ;

Csökkenő sorrend:

tól től iterátor ban ben Adatforrás
rendelés által iterátor . tulajdonság ereszkedő
válassza ki iterátor ;

1. példa: Növekvő sorrendben

Válassza ki az összes attribútumot az adatforrásból (listából), és adja vissza őket növekvő sorrendben a mennyiség attribútum értékei alapján.

A lekérdezés ' i-től ország_árakban
sorrend szerint i.mennyiség szerint növekvő
válassz én”

volt adat = tól től én ban ben country_prices
i . Mennyiség emelkedő
válassza ki én ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}

Kimenet:

21. sor – 29. sor:

2. példa: Csökkenő sorrend

Válassza ki az összes attribútumot az adatforrásból (listából), és adja vissza azokat csökkenő sorrendben a költség attribútum értékei alapján.

A lekérdezés ' i-től ország_árakban
rendelés szerint i.költség csökkenő
válassz én”

volt adat = tól től én ban ben country_prices
i . költség ereszkedő
válassza ki én ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}

Kimenet:

21. sor – 29. sor:

4. Limit

Az SQL korlátozása korlátozza a lekérdezés által visszaadott rekordokat. A lekérdezés által visszaadott legfontosabb rekordokat adja vissza. A LINQ-ban ezt a Skip() és a Take() operátor használatával érhetjük el. A Take() megkapja a megadott számú rekordot. A Skip() a kezdő rekordszám megadására szolgál. Ily módon elérhetjük a „limit” funkcionalitást a LINQ-ban.

Szintaxis:

( tól től iterátor ban ben Adatforrás
válassza ki iterátor ) . Kihagyás ( n ) . Vesz ( n ) ;
  1. A Skip() a rekordok átugrására és a fennmaradó rekordok visszaadására szolgál. Egy egész számot vesz fel, amely megadja az átugorandó elemek számát. Esetünkben ez 0.
  2. A Take() arra szolgál, hogy „n” számú rekordot vegyen ki az első rekordból.

Példa:

Válassza ki az első három rekordot a lekérdezés által visszaadott öt rekord közül.

A lekérdezés ' (i-től ország_árakban
válassza az i lehetőséget. Kihagy(0).Vedd(3)”

volt adat = ( tól től én ban ben country_prices
válassza ki én ) . Kihagyás ( 0 ) . Vesz ( 3 ) ;

az egyes ( volt én ban ben adat )
{
Konzol . WriteLine ( én . tétel + ' ' + én . elhelyezkedés + ' ' + én . Mennyiség + ' ' + én . költség ) ;

}

}

Kimenet:

21. sor – 28. sor:

Következtetés

Megtanultuk, hogyan írjunk lekérdezéseket C# LINQ-ban, amely hasonló az SQL-hez. Ennek az oktatóanyagnak a részeként megvitattuk, hogyan használhatjuk a „select” operátort a rekordok adatforrásból való kiválasztásához. A lekérdezés által visszaadott rekordok szűréséhez a „hol” operátort használtuk a feltételek megadásával. Ezután megtanultuk, hogyan kell rendezni a lekérdezés által visszaadott rekordokat az „order by” operátorral. Végül a rekordok korlátozására a Skip() és Take() operátorokat használtuk.