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>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

Voir aussi