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 Let
Aggregate
, , Group By
of 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
, Discount
en 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