Select, clause (Visual Basic)
Mise à jour : novembre 2007
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. 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 le nom de société et l'ID de commande de chaque commande de client dont le total est supérieur à 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 Name et ID de la nouvelle variable de portée. L'instruction For Each effectue une boucle sur chaque objet retourné et affiche les colonnes Name et ID 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
Concepts
Introduction à LINQ dans Visual Basic
Référence
Order By, clause (Visual Basic)