Delen via


Component selecteren (Visual Basic)

Hiermee definieert u het resultaat van een query.

Syntaxis

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

generator

var1
Optioneel. Een alias die kan worden gebruikt om te verwijzen naar de resultaten van de kolomexpressie.

fieldName1
Vereist. De naam van het veld dat moet worden geretourneerd in het queryresultaat.

Opmerkingen

U kunt de Select component gebruiken om de resultaten te definiëren die moeten worden geretourneerd uit een query. Hiermee kunt u de leden van een nieuw anoniem type definiëren dat door een query wordt gemaakt of om de leden van een benoemd type te richten dat wordt geretourneerd door een query. De Select component is niet vereist voor een query. Als er geen Select component is opgegeven, retourneert de query een type op basis van alle leden van de bereikvariabelen die zijn geïdentificeerd voor het huidige bereik. Zie Anonieme typen voor meer informatie. Wanneer een query een benoemd type maakt, wordt er een resultaat geretourneerd van het type IEnumerable<T> waar T het gemaakte type is.

De Select component kan verwijzen naar variabelen in het huidige bereik. Dit omvat bereikvariabelen die zijn geïdentificeerd in de From component (of From componenten). Het bevat ook eventuele nieuwe variabelen die zijn gemaakt met een alias door de LetAggregate, , Group Byof Group Join componenten of variabelen van een vorige Select component in de query-expressie. De Select component kan ook statische waarden bevatten. In het volgende codevoorbeeld ziet u bijvoorbeeld een queryexpressie waarin het Select queryresultaat wordt gedefinieerd als een nieuw anoniem type met vier leden: ProductName, Price, Discounten DiscountedPrice. De ProductName waarden en Price leden worden opgehaald uit de variabele van het productbereik die in de From component is gedefinieerd. De DiscountedPrice lidwaarde wordt berekend in de Let component. Het Discount lid is een statische waarde.

' 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

De Select component introduceert een nieuwe set bereikvariabelen voor volgende queryclausules en eerdere bereikvariabelen vallen niet meer binnen het bereik. De laatste Select component in een query-expressie bepaalt de retourwaarde van de query. De volgende query retourneert bijvoorbeeld de bedrijfsnaam en order-id voor elke klantorder waarvoor het totaal hoger is dan 500. De eerste Select component identificeert de bereikvariabelen voor de Where component en de tweede Select component. De tweede Select component identificeert de waarden die door de query worden geretourneerd als een nieuw anoniem type.

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

Als de Select component één item identificeert dat moet worden geretourneerd, retourneert de query-expressie een verzameling van het type van dat ene item. Als de Select component meerdere items identificeert die moeten worden geretourneerd, retourneert de query-expressie een verzameling van een nieuw anoniem type, op basis van de geselecteerde items. Met de volgende twee query's worden bijvoorbeeld verzamelingen van twee verschillende typen geretourneerd op basis van de Select component. De eerste query retourneert een verzameling bedrijfsnamen als tekenreeksen. De tweede query retourneert een verzameling Customer objecten die zijn gevuld met de bedrijfsnamen en adresgegevens.

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}

Opmerking

In de volgende query-expressie wordt een From component gebruikt om een bereikvariabele cust voor de customers verzameling te declareren. De Select component selecteert de klantnaam en id-waarde en vult de CompanyName en CustomerID kolommen van de nieuwe bereikvariabele in. De For Each instructie wordt herhaald over elk geretourneerd object en geeft de CompanyName en CustomerID kolommen voor elke record weer.

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

Zie ook