Select, clause (Visual Basic)
Définit le résultat d’une requête.
Syntaxe
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Éléments
var1
Optionnel. Un alias qui peut être utilisé pour référencer les résultats de l’expression en 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 à partir 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 retourne un type basé sur tous les membres des variables de portée identifiées pour l’étendue actuelle. Pour plus d’informations, consultez Types anonymes. Lorsqu’une requête crée un type nommé, elle retourne un résultat du type IEnumerable<T> où T
est le type créé.
La clause Select
peut référencer toutes les variables de l’étendue actuelle. Cela inclut les variables de portée identifiées dans la clause From
(ou les clauses From
). Cela inclut également toutes les nouvelles variables créées avec un alias par les clauses Aggregate
, Let
, Group By
ou Group Join
ou 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 montre une expression de requête dans laquelle la clause Select
définit le résultat de la requête comme un nouveau type anonyme avec quatre membres : ProductName
, Price
, Discount
et DiscountedPrice
. Les valeurs membres ProductName
et Price
sont extraites de la variable de portée de produits définie dans la clause From
. La valeur de 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 nouvel ensemble de variables de portée pour les clauses de requête ultérieures, et les variables de portée précédentes ne sont plus dans l’étendue. 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 l’entreprise et l’ID de commande pour chaque commande client pour laquelle 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 en tant que 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 plusieurs éléments à 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 en fonction de la clause Select
. La première requête retourne une collection de noms d’entreprise sous forme de chaînes. La deuxième requête retourne une collection d’objets Customer
renseignés avec les noms d’entreprise et les coordonnées.
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 du client et la valeur d’ID et remplit les colonnes CompanyName
et CustomerID
de la nouvelle variable de portée. L’instruction For Each
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