LINQ : Language INtegrated Query
Aller plus loin avec LINQ
Les clauses obligatoires
Vous allez découvrir une liste non-exhaustive des clauses LINQ ainsi qu'une brève explication sur leurs utilisations.
Tout commence par from...

... et se termine par select ou group by

Les clauses optionelles
- From : de 0 à n en plus
- Where : Représente un filtre. Il ne peut en exister qu'un
where expression
- Join : Permet de faire un regroupement sur la propriété d'une autre source de données (0 à n).
join var in queryable on jointure_expression
- Order by: Trie les résultats sur une propriété (0 à n).
orderby var.property (ascending | descending)
- Into : Réalise un stockage intermédiaire dans une variable (0 à n).
into var
Les opérateurs
Comme le propose le langage SQL, LINQ propose un ensemble d'opérateurs prédéfinis
- Count
- Sum
- Min
- Max
- Average
LINQ propose également quatre opérations de manipulation des ensembles
- Distinct
- Union
- Except
- Intersect
Les précautions : LINQ to Object
LINQ to Object propose de requêter les collections d'objets comme des sources de données. Evidemment, la magie qui réside dans le principe de "list comprehesion" est à manipuler avec précaution. Faire la somme des éléments d'une liste semble assez simple :
int totalStock = (from p in products select p.UnitsInStock).Sum();
Malheureusement, ce code très simple génère une première boucle qui ne sélectionne que des entiers. Ensuite, cette nouvelle collection est parcourue par la méthode Sum() pour en faire l'addition. Pour résoudre le problème, les opérateurs LINQ fournissent une signature plus adaptée. Elle permet de ne selectionner que la propriété cible durant l'itération de la méthode Sum().
int totalStock = products.Sum(p => p.UnitsInStock);