Query's schrijven in C# LINQ

Query S Schrijven In C Linq



Net als bij SQL is het mogelijk om query's in C# LINQ te schrijven met behulp van de querysyntaxis. Deze query's worden gebruikt in C#-databasetoepassingen op het web om de gegevens uit de database te halen en op het web weer te geven aan externe gebruikers. In deze handleiding bespreken we enkele LINQ-query's die vergelijkbaar zijn met SQL. Hiervoor maken we een lijstgegevensbron en passen we de query's erin toe.

Query-syntaxis:

Laten we eens kijken naar de generieke syntaxis:

van iterator in Databron
selecteren iterator ;

Hier:







  1. De Data_Source kan de lijst zijn die de gegevens bevat.
  2. De iterator wordt gebruikt om de elementen uit de Data_Source op te halen.

Databron

In deze hele gids gebruiken we de volgende lijst met records als gegevensbron en alle query's worden alleen op deze gegevensbron toegepast. Zorg ervoor dat u deze code in uw omgeving uitvoert en pas de query-instructies één voor één aan met de volgende voorbeelden die we gaan bespreken:



gebruik makend van Systeem ;
gebruik makend van System.Collections.Generic ;
gebruik makend van Systeem.Linq ;
gebruik makend van Systeem.Collecties ;

openbaar klas Berekeningen
{
openbaar statisch leegte Voornaamst ( )
{
// Lijst maken
Maak een lijst van country_prices = nieuw Lijst ( ) {

// Voeg 5 records toe aan de lijst
nieuw Prijzen ( ) { item = 'Fruit' ,plaats = 'VERENIGDE STATEN VAN AMERIKA' , hoeveelheid = 100 , kosten = 345,78 } ,
nieuw Prijzen ( ) { item = 'Noten' ,plaats = 'Indië' , hoeveelheid = 200 , kosten = 3645,78 } ,
nieuw Prijzen ( ) { item = 'Anderen' ,plaats = 'VK' , hoeveelheid = 500 , kosten = 90,68 } ,
nieuw Prijzen ( ) { item = 'olie' ,plaats = 'VERENIGDE STATEN VAN AMERIKA' , hoeveelheid = 100 , kosten = 345,78 } ,
nieuw Prijzen ( ) { item = 'Spaanse pepers' ,plaats = 'VERENIGDE STATEN VAN AMERIKA' , hoeveelheid = 10 , kosten = 67,89 } ,
} ;


voor elk ( was i in country_prices )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;
}
}
}
openbaar klas Prijzen {
openbaar snaar item { krijgen ; set ; }
openbaar snaar plaats { krijgen ; set ; }
openbaar int hoeveelheid { krijgen ; set ; }
openbaar dubbele kosten { krijgen ; set ; }
}

Registraties:







Uitleg:

1. Maak de prijzen met de volgende kenmerken:

2. Maak een andere klasse aan die 'Berekeningen' is met de hoofdmethode en maak de lijst country_prices met vijf records.



Selecteer

Kortom, 'selecteren' is een projectie-operator die de attributen uit de opgegeven gegevensbron selecteert. De zoekopdracht begint met 'van'. Vervolgens specificeren we de iterator die itereert over de gegevensbron. Vervolgens wordt de operator 'selecteren' opgegeven.

Syntaxis:

Alle attributen: van iterator in Data_Source selecteer iterator;

Specifiek kenmerk: van iterator in Data_Source selecteer iterator.attribute;

Voorbeeld 1:

Laten we een query schrijven om alle records uit de lijst te selecteren.

gebruik makend van Systeem ;
gebruik makend van System.Collections.Generic ;
gebruik makend van Systeem.Linq ;
gebruik makend van Systeem.Collecties ;

openbaar klas Berekeningen
{
openbaar statisch leegte Voornaamst ( )
{
// Lijst maken
Maak een lijst van country_prices = nieuw Lijst ( ) {

// Voeg 5 records toe aan de lijst
nieuw Prijzen ( ) { item = 'Fruit' ,plaats = 'VERENIGDE STATEN VAN AMERIKA' , hoeveelheid = 100 , kosten = 345,78 } ,
nieuw Prijzen ( ) { item = 'Noten' ,plaats = 'Indië' , hoeveelheid = 200 , kosten = 3645,78 } ,
nieuw Prijzen ( ) { item = 'Anderen' ,plaats = 'VK' , hoeveelheid = 500 , kosten = 90,68 } ,
nieuw Prijzen ( ) { item = 'olie' ,plaats = 'VERENIGDE STATEN VAN AMERIKA' , hoeveelheid = 100 , kosten = 345,78 } ,
nieuw Prijzen ( ) { item = 'Spaanse pepers' ,plaats = 'VERENIGDE STATEN VAN AMERIKA' , hoeveelheid = 10 , kosten = 67,89 } ,
} ;

// selecteer operator in de query
was gegevens = van i in country_prices
selecteren i ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}
}
}
openbaar klas Prijzen {
openbaar snaar item { krijgen ; set ; }
openbaar snaar plaats { krijgen ; set ; }
openbaar int hoeveelheid { krijgen ; set ; }
openbaar dubbele kosten { krijgen ; set ; }
}

Uitgang:

Hier hebben we geen attribuut opgegeven in de 'select' -query. We hebben alle attributen van de query (gegevens) binnen de 'foreach' -lus opgehaald met behulp van de iterator.

Voorbeeld 2:

Haal nu de items op door het itemkenmerk op te geven in de operator 'selecteren'. De vraag is  ' vanaf i in country_prices selecteer i.item ”.

//select operator om itemkenmerk in de query te krijgen
was gegevens = van i in country_prices
selecteren i . item ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i ) ;

}

Uitgang:

Lijn # 21 – Lijn # 29:

2. Waar

Als u de gegevens wilt filteren op basis van bepaalde voorwaarden, kunt u de 'where'-operator in de query gebruiken, samen met de 'select'-component. Maar eerst wordt de 'where'-operator gebruikt en vervolgens wordt de select-operator opgegeven.

Syntaxis:

Laten we eens kijken hoe we de operator 'where' in de LINQ-query kunnen gebruiken.

van iterator in Databron
waar voorwaarde / S
selecteren iterator . attribuut ;

Voorbeeld 1: Enkele voorwaarde

Laten we de records filteren op basis van het itemkenmerk. Gebruik de operator gelijk aan (==) in de 'where'-operator als voorwaarde en vergelijk de iterator met 'Chillies'. Dus de records die gerelateerd zijn aan 'Chillies' zijn geselecteerd.

De vraag is ' vanaf i in country_prices
waarbij i.item == 'Spaanse pepers'
selecteer ik'

//selecteer waar records moeten worden gefilterd
was gegevens = van i in country_prices
waar i . item == 'Spaanse pepers'
selecteren i ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}

Uitgang:

Er is slechts één record met het item 'Chillies'.

Lijn # 21 – Lijn # 30:

Voorbeeld 2: Meerdere voorwaarden

Laten we de records filteren op basis van de attributen locatie en hoeveelheid. De hoeveelheid moet groter zijn dan 50 en kleiner dan 300. De locatie moet 'USA' zijn.

De vraag is ' vanaf i in country_prices
waar i.hoeveelheid > 50
waarbij i.hoeveelheid < 300
waarbij i.location == 'VS'
selecteer ik'

//selecteer waar u records wilt filteren door meerdere voorwaarden op te geven
was gegevens = van i in country_prices
waar i . hoeveelheid > vijftig
waar i . hoeveelheid < 300
waar i . plaats == 'VERENIGDE STATEN VAN AMERIKA'
selecteren i ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}

Uitgang:

Er zijn twee records die aan de vorige voorwaarden voldoen.

Lijn # 21 – Lijn # 32:

Voorbeeld 3: En (&&) Operator

We kunnen de operator 'en (&&)' specificeren om meerdere voorwaarden tegelijk op te geven. Als alle voorwaarden waar zijn, worden de records die aan alle voorwaarden voldoen, geretourneerd door de query.

In dit voorbeeld selecteren we de records als de hoeveelheid groter is dan 20 en de kosten 67,89 zijn.

De vraag is ' vanaf i in country_prices
waarbij i.hoeveelheid < 20 && i.kosten == 67,89
selecteer ik'

was gegevens = van i in country_prices
waar i . hoeveelheid < twintig && i . kosten == 67,89
selecteren i ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}

Uitgang:

Er is slechts één record met een hoeveelheid die kleiner is dan 20 en een kostprijs van 67,89

Lijn # 21 – Lijn # 29:

Voorbeeld 4: Of (||) Operator

De operator 'of (||)' wordt ook gebruikt om meerdere voorwaarden tegelijk op te geven. Als ten minste één voorwaarde waar is, worden de records geretourneerd die aan die voorwaarde voldoen.

In dit voorbeeld selecteren we de records als het aantal groter is dan 300 of als de locatie 'Tokyo' is.

De vraag is ' vanaf i in country_prices
waarbij i.hoeveelheid > 300 || i.locatie == 'Tokio'
selecteer ik'

was gegevens = van i in country_prices
waar i . hoeveelheid > 300 || i . plaats == 'Tokio'
selecteren i ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}

Uitgang:

Er is slechts één record met een aantal dat groter is dan 300 (aan de eerste voorwaarde is voldaan).

Lijn # 21 – Lijn # 29:

3. Bestel door

Als u de records die door de LINQ-query worden geretourneerd, in oplopende of aflopende volgorde wilt rangschikken op basis van waarden in een van de attributen, kunt u de operator 'volgen op' in de query gebruiken. U moet deze operator specificeren vóór de 'select'-operator.

Syntaxis:

Laten we eens kijken hoe we de operator 'bestellen op' in de LINQ-query kunnen gebruiken.

Oplopende volgorde:

van iterator in Databron
volgorde door iterator . attribuut oplopend
selecteren iterator ;

Aflopende volgorde:

van iterator in Databron
volgorde door iterator . attribuut aflopend
selecteren iterator ;

Voorbeeld 1: Oplopende volgorde

Selecteer alle attributen uit de gegevensbron (lijst) en retourneer ze in oplopende volgorde op basis van de waarden in het kwantiteitsattribuut.

De vraag is ' vanaf i in country_prices
bestelvolgorde i.aantal oplopend
selecteer ik'

was gegevens = van i in country_prices
bestellen bij i . hoeveelheid oplopend
selecteren i ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}

Uitgang:

Lijn # 21 – Lijn # 29:

Voorbeeld 2: Aflopende volgorde

Selecteer alle attributen uit de gegevensbron (lijst) en retourneer ze in aflopende volgorde op basis van de waarden in het cost-attribuut.

De vraag is ' vanaf i in country_prices
bestellen via i.kosten aflopend
selecteer ik'

was gegevens = van i in country_prices
bestellen bij i . kosten aflopend
selecteren i ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}

Uitgang:

Lijn # 21 – Lijn # 29:

4. Limiet

Limit in SQL beperkt de records die door de query worden geretourneerd. Het retourneert de toprecords die door de query worden geretourneerd. In LINQ kunnen we dit bereiken door Skip() te gebruiken met de Take()-operator. Take() haalt het opgegeven aantal records op. Skip() wordt gebruikt om het beginrecordnummer op te geven. Op deze manier kunnen we de 'limiet' -functionaliteit in LINQ bereiken.

Syntaxis:

( van iterator in Databron
selecteren iterator ) . Overslaan ( N ) . Nemen ( N ) ;
  1. Skip() wordt gebruikt om de records over te slaan en de resterende records te retourneren. Er is een geheel getal voor nodig dat het aantal elementen specificeert dat moet worden overgeslagen. In ons geval is dat 0.
  2. Take() wordt gebruikt om het aantal 'n' records van het eerste record te nemen.

Voorbeeld:

Selecteer de eerste drie records van vijf records die door de query worden geretourneerd.

De vraag is ' (vanaf i in country_prices
selecteer i).Skip(0).Take(3)”

was gegevens = ( van i in country_prices
selecteren i ) . Overslaan ( 0 ) . Nemen ( 3 ) ;

voor elk ( was i in gegevens )
{
Troosten . Schrijf lijn ( i . item + ' ' + i . plaats + ' ' + i . hoeveelheid + ' ' + i . kosten ) ;

}

}

Uitgang:

Lijn # 21 – Lijn # 28:

Conclusie

We hebben geleerd hoe we de query's moeten schrijven in C# LINQ, vergelijkbaar met SQL. Als onderdeel van deze zelfstudie hebben we besproken hoe u de operator 'selecteren' kunt gebruiken om de records uit de gegevensbron te selecteren. Om de records te filteren die door de query worden geretourneerd, hebben we de operator 'where' gebruikt door de voorwaarden op te geven. Vervolgens hebben we geleerd hoe we de records die door de query worden geretourneerd, kunnen sorteren met de operator 'volgen op'. Ten slotte hebben we de operatoren Skip() en Take() gebruikt om de records te beperken.