From, clause (Visual Basic)

Mise à jour : novembre 2007

Spécifie une ou plusieurs variables de portée et une collection pour requêtes.

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

Éléments

  • element
    Obligatoire. Variable de portée utilisée pour parcourir les éléments de la collection. Une variable de portée sert à se reporter à chaque membre de la collection alors que la requête parcourt cette collection. Doit être un type énumérable.

  • type
    Facultatif. Type d'element. Si aucun type n'est spécifié, le type d'element est déduit de collection.

  • collection
    Obligatoire. Fait référence à la collection à interroger. Doit être un type énumérable.

Notes

La clause From permet d'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 de sources. Ces variables sont appelées variables de portée. La clause From est requise pour toute requête, sauf lorsque la clause Aggregate est utilisée pour identifier une requête qui ne renvoie que des résultats regroupés. Pour plus d'informations, consultez Aggregate, clause (Visual Basic).

Vous pouvez spécifier plusieurs clauses From dans une requête pour identifier plusieurs collections devant être jointes. Lorsque vous spécifiez plusieurs collections, elles sont parcourues indépendamment, mais vous pouvez les joindre les unes aux autres si elles sont liées. Pour joindre des collections de manière implicite, utilisez la clause Select ; pour les joindre de manière explicite, utilisez la clause Join ou la clause Group Join. Si vous le souhaitez, vous pouvez spécifier des variables de portée et des collections multiples dans une clause From unique, chaque variable de portée et chaque collection étant séparée de ses voisines par une virgule. L'exemple de code qui suit montre les deux options de syntaxe pour 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 semblable à la portée d'une boucle For. Par conséquent, chaque variable de portée element de la requête doit recevoir un nom unique. Comme vous pouvez spécifier plusieurs clauses From par requête, les clauses From suivantes peuvent se reporter à des variables de portée de la clause From, ou se reporter pour aligner des variables de portée d'une clause From précédente. Par exemple, l'exemple suivant affiche 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 de la première clause.

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

Chaque clause From peut être suivie de toute combinaison de clauses de requête supplémentaires pour affiner la requête. Vous pouvez affiner la requête des manières suivantes :

  • Combinez plusieurs collections de manière implicite, en utilisant les clauses From et Select, ou de manière explicite, en utilisant les clauses Join ou Group Join.

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

  • Triez le résultat à l'aide de la clause Order By.

  • Groupez les résultats similaires, en utilisant la clause Group By.

  • Utilisez la clause Aggregate pour identifier les fonctions d'agrégation à évaluer pour le résultat de la requête toute entière.

  • Utilisez la clause Let pour introduire une variable d'itération dont la valeur est déterminée par une expression au lieu d'une collection.

  • Utilisez la clause Distinct pour ignorer les doublons dans les résultats de la requête.

  • Identifiez des 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 restreindre la sortie aux clients de la région spécifiée. La boucle For Each affiche le nom de 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

Concepts

Introduction à LINQ dans Visual Basic

Référence

For Each...Next, instruction (Visual Basic)

For...Next, instruction (Visual Basic)

Select, clause (Visual Basic)

Where, clause (Visual Basic)

Aggregate, clause (Visual Basic)

Distinct, clause (Visual Basic)

Join, clause (Visual Basic)

Group Join, clause (Visual Basic)

Order By, clause (Visual Basic)

Let, clause (Visual Basic)

Skip, clause (Visual Basic)

Take, clause (Visual Basic)

Skip While, clause (Visual Basic)

Take While, clause (Visual Basic)

Autres ressources

Requêtes (Visual Basic)