Select, clause (Visual Basic)

Définit le résultat d'une requête.

Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]

Éléments

  • var1
    Facultatif. Alias pouvant être utilisé pour référencer les résultats de l'expression de colonne.

  • fieldName1
    Obligatoire. Nom du champ à retourner dans le résultat de la requête.

Notes

Vous pouvez utiliser la clause Select pour définir les résultats à retourner d'une requête. Cela vous permet de définir les membres d'un nouveau type anonyme créé par une requête ou de cibler les membres d'un type nommé retourné par une requête. La clause Select n'est pas obligatoire pour une requête. Si aucune clause Select n'est spécifiée, la requête retournera un type en fonction de tous les membres des variables de portée identifiés pour la portée actuelle. Pour plus d'informations, consultez Types anonymes (Visual Basic). Lorsqu'une requête crée un type nommé, elle retourne un résultat de type IEnumerable<T> où T est le type créé.

La clause Select peut référencer toutes les variables de la portée actuelle. Cela inclut des variables de portée identifiées dans la clause From (ou dans les clauses From). Cela inclut également toutes les nouvelles variables créées avec un alias par les clauses Aggregate, Let, Group Byou Group Join ou les variables d'une clause Select précédente dans l'expression de requête. La clause Select peut également inclure des valeurs statiques. Par exemple, l'exemple de code suivant affiche une expression de requête dans laquelle la clause Select définit le résultat de la requête comme un nouveau type anonyme possédant quatre membres : ProductName, Price, Discount et DiscountedPrice. Les valeurs membres ProductName et Price sont issues de la variable de portée du produit définie dans la clause From. La valeur membre DiscountedPrice est calculée dans la clause Let. Le membre Discount est une valeur statique.

' 10% discount 
Dim discount_10 = 0.1
Dim priceList =
  From product In products
  Let DiscountedPrice = product.UnitPrice * (1 - discount_10)
  Select product.ProductName, Price = product.UnitPrice,
  Discount = discount_10, DiscountedPrice

La clause Select introduit un nouveau jeu de variables de portée pour les clauses de requête suivantes, et les variables de portée précédentes qui sont hors de portée. La dernière clause Select d'une expression de requête détermine la valeur de retour de la requête. Par exemple, la requête suivante retourne la Société et l'ID de commande pour chaque ordre de client dont le total dépasse 500. La première clause Select identifie les variables de portée pour la clause Where et la deuxième clause Select. La deuxième clause Select identifie les valeurs retournées par la requête comme un nouveau type anonyme.

Dim customerList = From cust In customers, ord In cust.Orders
                   Select Name = cust.CompanyName,
                          Total = ord.Total, ord.OrderID
                   Where Total > 500
                   Select Name, OrderID

Si la clause Select identifie un élément unique à retourner, l'expression de requête retourne une collection du type de cet élément unique. Si la clause Select identifie des éléments multiples à retourner, l'expression de requête retourne une collection d'un nouveau type anonyme, en fonction des éléments sélectionnés. Par exemple, les deux requêtes suivantes retournent des collections de deux types différents basés sur la clause Select. La première requête retourne une collection de noms de société sous forme de chaînes. La deuxième requête retourne une collection d'objets Customer remplie avec les noms de société et les adresses.

Dim customerNames = From cust In customers 
                    Select cust.CompanyName

Dim customerInfo As IEnumerable(Of Customer) =
  From cust In customers
  Select New Customer With {.CompanyName = cust.CompanyName,
                             .Address = cust.Address,
                             .City = cust.City,
                             .Region = cust.Region,
                             .Country = cust.Country}

Exemple

L'expression de requête suivante utilise une clause From pour déclarer une variable de portée cust pour la collection customers. La clause Select sélectionne le nom de client et la valeur d'ID et remplit les colonnes CompanyName et CustomerID de la nouvelle variable de portée. L'instruction For Each effectue une boucle sur chaque objet retourné et affiche les colonnes CompanyName et CustomerID pour chaque enregistrement.

Sub SelectCustomerNameAndId(ByVal customers() As Customer)
  Dim nameIds = From cust In customers
                Select cust.CompanyName, cust.CustomerID
  For Each nameId In nameIds
    Console.WriteLine(nameId.CompanyName & ": " & nameId.CustomerID)
  Next
End Sub

Voir aussi

Référence

From, clause (Visual Basic)

Where, clause (Visual Basic)

Order By, clause (Visual Basic)

Concepts

Introduction à LINQ dans Visual Basic

Types anonymes (Visual Basic)

Autres ressources

Requêtes (Visual Basic)