Syntaxe de la requête :
Regardons la syntaxe générique :
depuis itérateur dans La source de donnéessélectionner itérateur ;
Ici:
- Le Data_Source peut être la liste qui contient les données.
- L'itérateur est utilisé pour récupérer les éléments du Data_Source.
La source de données
Dans l'ensemble de ce guide, nous utiliserons la liste d'enregistrements suivante comme source de données et toutes les requêtes sont appliquées sur cette source de données uniquement. Assurez-vous que vous exécutez ce code dans votre environnement et modifiez les instructions de requête avec les exemples suivants un par un dont nous allons discuter :
en utilisant Système ;
en utilisant System.Collections.GenericSystem.Collections.Generic ;
en utilisant System.Linq ;
en utilisant System.Collections ;
public classe Calculs
{
public statique annuler Principal ( )
{
// Création de liste
Liste country_prices = nouveau Liste ( ) {
// Ajouter 5 enregistrements dans la liste
nouveau Des prix ( ) { article = 'Fruits' ,emplacement = 'ETATS-UNIS' , quantité = 100 , coût = 345,78 } ,
nouveau Des prix ( ) { article = 'Des noisettes' ,emplacement = 'Inde' , quantité = 200 , coût = 3645.78 } ,
nouveau Des prix ( ) { article = 'Autres' ,emplacement = 'ROYAUME-UNI' , quantité = 500 , coût = 90,68 } ,
nouveau Des prix ( ) { article = 'huile' ,emplacement = 'ETATS-UNIS' , quantité = 100 , coût = 345,78 } ,
nouveau Des prix ( ) { article = 'Piments' ,emplacement = 'ETATS-UNIS' , quantité = dix , coût = 67,89 } ,
} ;
pour chaque ( était je dans country_prices )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
}
}
public classe Des prix {
public chaîne article { obtenir ; ensemble ; }
public chaîne emplacement { obtenir ; ensemble ; }
public entier quantité { obtenir ; ensemble ; }
public double coût { obtenir ; ensemble ; }
}
Enregistrements :
Explication:
1. Créez les prix avec les attributs suivants :
2. Créez une autre classe qui est 'Calculs' avec la méthode principale et créez la liste country_prices avec cinq enregistrements.
Sélectionner
Fondamentalement, 'select' est un opérateur de projection qui sélectionne les attributs de la source de données spécifiée. La requête commence par 'depuis'. Ensuite, nous spécifions l'itérateur qui itère sur la source de données. Ensuite, l'opérateur 'select' est spécifié.
Syntaxe:
Tous les attributs : from iterator in Data_Source select iterator ;
Attribut spécifique : à partir de l'itérateur dans Data_Source, sélectionnez iterator.attribute ;
Exemple 1:
Écrivons une requête pour sélectionner tous les enregistrements de la liste.
en utilisant Système ;en utilisant System.Collections.GenericSystem.Collections.Generic ;
en utilisant System.Linq ;
en utilisant System.Collections ;
public classe Calculs
{
public statique annuler Principal ( )
{
// Création de liste
Liste country_prices = nouveau Liste ( ) {
// Ajouter 5 enregistrements dans la liste
nouveau Des prix ( ) { article = 'Fruits' ,emplacement = 'ETATS-UNIS' , quantité = 100 , coût = 345,78 } ,
nouveau Des prix ( ) { article = 'Des noisettes' ,emplacement = 'Inde' , quantité = 200 , coût = 3645.78 } ,
nouveau Des prix ( ) { article = 'Autres' ,emplacement = 'ROYAUME-UNI' , quantité = 500 , coût = 90,68 } ,
nouveau Des prix ( ) { article = 'huile' ,emplacement = 'ETATS-UNIS' , quantité = 100 , coût = 345,78 } ,
nouveau Des prix ( ) { article = 'Piments' ,emplacement = 'ETATS-UNIS' , quantité = dix , coût = 67,89 } ,
} ;
//opérateur select dans la requête
était données = depuis je dans country_prices
sélectionner je ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
}
}
public classe Des prix {
public chaîne article { obtenir ; ensemble ; }
public chaîne emplacement { obtenir ; ensemble ; }
public entier quantité { obtenir ; ensemble ; }
public double coût { obtenir ; ensemble ; }
}
Sortir:
Ici, nous n'avons spécifié aucun attribut dans la requête 'select'. Nous avons récupéré tous les attributs de la requête (données) à l'intérieur de la boucle 'foreach' à l'aide de l'itérateur.
Exemple 2 :
Maintenant, obtenez les éléments en spécifiant l'attribut d'élément dans l'opérateur 'select'. La requête est ' de i dans country_prices sélectionnez i.item ”.
// opérateur de sélection pour obtenir l'attribut d'élément dans la requêteétait données = depuis je dans country_prices
sélectionner je . article ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je ) ;
}
Sortir:
Ligne # 21 – Ligne # 29 :
2. Où
Si vous souhaitez filtrer les données en fonction de certaines conditions, vous pouvez utiliser l'opérateur 'where' dans la requête avec la clause 'select'. Mais l'opérateur 'où' est utilisé en premier, puis l'opérateur de sélection est spécifié.
Syntaxe:
Voyons comment utiliser l'opérateur 'where' dans la requête LINQ.
depuis itérateur dans La source de donnéesoù condition / s
sélectionner itérateur . attribut ;
Exemple 1: Condition unique
Filtrons les enregistrements en fonction de l'attribut de l'élément. Utilisez l'opérateur égal à (==) dans l'opérateur 'où' comme condition et comparez l'itérateur avec 'Chillies'. Ainsi, les enregistrements liés à « Piments » sont sélectionnés.
La requête est ' à partir de i dans country_prices
où i.item == 'Piments'
sélectionnez-moi »
était données = depuis je dans country_prices
où je . article == 'Piments'
sélectionner je ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
Sortir:
Il n'y a qu'un seul enregistrement avec l'item « Piments ».
Ligne # 21 – Ligne # 30 :
Exemple 2 : Conditions multiples
Filtrons les enregistrements en fonction des attributs d'emplacement et de quantité. La quantité doit être supérieure à 50 et inférieure à 300. L'emplacement doit être 'USA'.
La requête est ' à partir de i dans country_prices
où i.quantité > 50
où i.quantité < 300
où i.location == 'États-Unis'
sélectionnez-moi »
était données = depuis je dans country_prices
où je . quantité > cinquante
où je . quantité < 300
où je . emplacement == 'ETATS-UNIS'
sélectionner je ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
Sortir:
Deux enregistrements correspondent aux conditions précédentes.
Ligne # 21 – Ligne # 32 :
Exemple 3 : Et (&&) Opérateur
Nous pouvons spécifier l'opérateur 'et (&&)' pour spécifier plusieurs conditions à la fois. Si toutes les conditions sont vraies, les enregistrements qui satisfont à toutes les conditions sont renvoyés par la requête.
Dans cet exemple, nous sélectionnons les enregistrements si la quantité est supérieure à 20 et le coût est de 67,89.
La requête est ' à partir de i dans country_prices
où i.quantité < 20 && i.coût == 67,89
sélectionnez-moi »
où je . quantité < vingt && je . coût == 67,89
sélectionner je ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
Sortir:
Il n'y a qu'un seul enregistrement avec une quantité inférieure à 20 et un coût de 67,89
Ligne # 21 – Ligne # 29 :
Exemple 4 : Ou (||) Opérateur
L'opérateur 'ou (||)' est également utilisé pour spécifier plusieurs conditions à la fois. Si au moins une condition est vraie, les enregistrements qui satisfont cette condition sont renvoyés.
Dans cet exemple, nous sélectionnons les enregistrements si la quantité est supérieure à 300 ou si l'emplacement est 'Tokyo'.
La requête est ' à partir de i dans country_prices
où i.quantité > 300 || i.location == 'Tokyo'
sélectionnez-moi »
où je . quantité > 300 || je . emplacement == 'Tokyo'
sélectionner je ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
Sortir:
Il n'y a qu'un seul enregistrement avec une quantité supérieure à 300 (la première condition est satisfaite).
Ligne # 21 – Ligne # 29 :
3. Commander par
Si vous souhaitez organiser les enregistrements renvoyés par la requête LINQ dans l'ordre croissant ou décroissant en fonction des valeurs de l'un des attributs, vous pouvez utiliser l'opérateur « trier par » dans la requête. Vous devez spécifier cet opérateur avant l'opérateur 'select'.
Syntaxe:
Voyons comment utiliser l'opérateur 'order by' dans la requête LINQ.
Ordre croissant:
depuis itérateur dans La source de donnéescommande par itérateur . attribut Ascendant
sélectionner itérateur ;
Ordre décroissant:
depuis itérateur dans La source de donnéescommande par itérateur . attribut descendant
sélectionner itérateur ;
Exemple 1: Ordre croissant
Sélectionnez tous les attributs de la source de données (liste) et renvoyez-les dans l'ordre croissant en fonction des valeurs de l'attribut de quantité.
La requête est ' à partir de i dans country_prices
orderby i.quantity croissant
sélectionnez-moi »
commander par moi . quantité Ascendant
sélectionner je ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
Sortir:
Ligne # 21 – Ligne # 29 :
Exemple 2 : Ordre décroissant
Sélectionnez tous les attributs de la source de données (liste) et renvoyez-les dans l'ordre décroissant en fonction des valeurs de l'attribut de coût.
La requête est ' à partir de i dans country_prices
orderby i.cost décroissant
sélectionnez-moi »
commander par moi . coût descendant
sélectionner je ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
Sortir:
Ligne # 21 – Ligne # 29 :
4. Limite
La limite dans SQL limite les enregistrements renvoyés par la requête. Il renvoie les meilleurs enregistrements renvoyés par la requête. Dans LINQ, nous pouvons y parvenir en utilisant Skip() avec l'opérateur Take(). Take() obtient le nombre d'enregistrements spécifié. Skip() est utilisé pour spécifier le numéro d'enregistrement de départ. De cette façon, nous pouvons atteindre la fonctionnalité 'limite' dans LINQ.
Syntaxe:
( depuis itérateur dans La source de donnéessélectionner itérateur ) . Sauter ( n ) . Prendre ( n ) ;
- Skip () est utilisé pour ignorer les enregistrements et renvoyer les enregistrements restants. Il prend un entier qui spécifie le nombre d'éléments à ignorer. Dans notre cas, c'est 0.
- Take() est utilisé pour prendre le nombre 'n' d'enregistrements à partir du premier enregistrement.
Exemple:
Sélectionnez les trois premiers enregistrements parmi les cinq qui sont renvoyés par la requête.
La requête est ' (à partir de i dans country_prices
sélectionnez i).Skip(0).Take(3) »
sélectionner je ) . Sauter ( 0 ) . Prendre ( 3 ) ;
pour chaque ( était je dans données )
{
Console . WriteLine ( je . article + ' ' + je . emplacement + ' ' + je . quantité + ' ' + je . coût ) ;
}
}
Sortir:
Ligne # 21 – Ligne # 28 :
Conclusion
Nous avons appris à écrire les requêtes en C# LINQ, qui est similaire à SQL. Dans le cadre de ce didacticiel, nous avons expliqué comment utiliser l'opérateur 'select' pour sélectionner les enregistrements de la source de données. Pour filtrer les enregistrements renvoyés par la requête, nous avons utilisé l'opérateur 'où' en précisant les conditions. Ensuite, nous avons appris à trier les enregistrements renvoyés par la requête avec l'opérateur 'trier par'. Enfin, pour limiter les enregistrements, nous avons utilisé les opérateurs Skip() et Take().