Select, clause (Visual Basic)

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

Syntax

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

Éléments

var1
Optionnel. Alias qui peut ê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.

Remarques

Vous pouvez utiliser la Select clause 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é qui est retourné par une requête. La Select clause n’est pas requise pour une requête. Si aucune Select clause n’est spécifiée, la requête retourne un type en fonction de tous les membres des variables de plage identifiées pour l’étendue actuelle. Pour plus d’informations, consultez types anonymes. Quand une requête crée un type nommé, elle retourne un résultat de type IEnumerable<T>T est le type créé.

La Select clause peut faire référence à toutes les variables dans l’étendue actuelle. Cela comprend les variables de plage identifiées dans la From clause ( From clauses or). Elle comprend également les nouvelles variables créées avec un alias par les Aggregate Let Group By clauses,, ou Group Join , ou les variables d’une Select clause précédente dans l’expression de requête. La Select clause peut également inclure des valeurs statiques. Par exemple, l’exemple de code suivant affiche une expression de requête dans laquelle la Select clause définit le résultat de la requête en tant que nouveau type anonyme avec quatre membres : ProductName , Price , Discount et DiscountedPrice . Les ProductName Price valeurs de membre et sont extraites de la variable de plage de produits définie dans la From clause. La DiscountedPrice valeur de membre est calculée dans la Let clause. Le Discount membre 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 Select clause introduit un nouvel ensemble de variables de plage pour les clauses de requête suivantes, et les variables de plage précédentes ne sont plus dans la portée. La dernière Select clause dans une expression de requête détermine la valeur de retour de la requête. Par exemple, la requête ci-dessous retourne le nom de la société et l’ID de commande pour chaque commande client dont le total dépasse 500. La première Select clause identifie les variables de plage de la Where clause et de la deuxième Select clause. La deuxième Select clause identifie les valeurs retournées par la requête sous la forme d’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 Select clause identifie un seul élément à retourner, l’expression de requête retourne une collection du type de cet élément unique. Si la Select clause 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 Select clause. 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' Customer objets remplis avec les noms et les informations d’adresse de la société.

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 From clause pour déclarer une variable cust de portée pour la customers collection. La Select clause sélectionne la valeur du nom et de l’ID du client et remplit les CompanyName CustomerID colonnes et de la nouvelle variable de portée. L' For Each instruction effectue une boucle sur chaque objet retourné et affiche les CompanyName CustomerID colonnes et 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