From, clause (Visual Basic)

Spécifie une ou plusieurs variables de portée et une collection à interroger.

Syntaxe

From element [ As type ] In collection [ _ ]  
  [, element2 [ As type2 ] In collection2 [, ... ] ]  

Éléments

Terme Définition
element Obligatoire. Variable de portée utilisée pour l’itération dans les éléments de la collection. Une variable de portée est utilisée pour faire référence à chaque membre de la collection pendant l’itération de la requête dans la collection. Doit être un type énumérable.
type Optionnel. Type d'élément element. Si aucun type n’est spécifié, le type de element est inféré de collection.
collection Obligatoire. Fait référence à la collection à interroger. Doit être un type énumérable.

Notes

La clause From est utilisée pour identifier les données sources d’une requête et les variables utilisées pour faire référence à un élément de la collection source. Ces variables sont appelées variables de portée. La clause From est requise pour une requête, sauf si la clause Aggregate est utilisée pour identifier une requête qui retourne uniquement des résultats agrégés. Pour plus d’informations, consultez Clause Aggregate.

Vous pouvez spécifier plusieurs clauses From dans une requête pour identifier plusieurs collections à joindre. Quand plusieurs collections sont spécifiées, elles sont itérées de manière indépendante. Vous pouvez également les joindre si elles sont associées. Vous pouvez joindre des collections implicitement en utilisant la clause Select ou explicitement en utilisant la clause Join ou la clause Group Join. Vous pouvez également spécifier plusieurs variables de portée et plusieurs collections dans une seule clause From en séparant chaque association de variable de portée et collection par une virgule. L’exemple de code suivant montre les deux options de syntaxe de la clause From.

' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2

' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
              From var2 In collection2

La clause From définit la portée d’une requête, qui est similaire à la portée d’une boucle For. Ainsi, chaque variable de portée element dans la portée d’une requête doit avoir un nom unique. Étant donné que vous pouvez spécifier plusieurs clauses From pour une requête, les clauses From suivantes peuvent faire référence à des variables de portée dans la clause From ou à des variables de portée dans une clause From précédente. L’exemple suivant montre une clause From imbriquée où la collection dans la deuxième clause est basée sur une propriété de la variable de portée dans la première clause.

Dim allOrders = From cust In GetCustomerList()
                From ord In cust.Orders
                Select ord

Chaque clause From peut être suivie de n’importe quelle combinaison de clauses de requête supplémentaires, vous permettant d’affiner la requête. Vous pouvez affiner la requête en utilisant les méthodes suivantes :

  • Combiner plusieurs collections implicitement en utilisant les clauses From et Select ou explicitement en utilisant la clause Join ou la clause Group Join.

  • Utiliser la clause Where pour filtrer le résultat de la requête.

  • Trier le résultat en utilisant la clause Order By.

  • Grouper des résultats similaires en utilisant la clause Group By.

  • Utiliser la clause Aggregate pour identifier les fonctions d’agrégation à évaluer pour l’ensemble du résultat de la requête.

  • Utiliser la clause Let pour introduire une variable d’itération dont la valeur est déterminée par une expression et non à partir d’une collection.

  • Utiliser la clause Distinct pour ignorer les résultats de requête en double.

  • Identifier les parties du résultat à retourner en utilisant les clauses Skip, Take, Skip While et Take While.

Exemple

L’expression de requête suivante utilise une clause From pour déclarer une variable de portée cust pour chaque objet Customer de la collection customers. La clause Where utilise la variable de portée pour limiter la sortie aux clients de la région spécifiée. La boucle For Each affiche le nom de la société pour chaque client dans le résultat de la requête.

Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
                              ByVal region As String)

    Dim customersForRegion = From cust In customers
                             Where cust.Region = region

    For Each cust In customersForRegion
        Console.WriteLine(cust.CompanyName)
    Next
End Sub

Voir aussi