Clausola Select (Visual Basic)
Definisce il risultato di una query.
Sintassi
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Parti
var1
Facoltativo. Alias che può essere utilizzato per fare riferimento ai risultati dell'espressione di colonna.
fieldName1
Obbligatorio. Nome del campo da restituire nel risultato della query.
Osservazioni:
È possibile usare la clausola Select
per definire i risultati da restituire da una query. In questo modo è possibile definire i membri di un nuovo tipo anonimo creato da una query o definire come destinazione i membri di un tipo denominato restituito da una query. La clausola Select
non è necessaria per una query. Se non viene specificata alcuna clausola Select
, la query restituirà un tipo basato su tutti i membri delle variabili di intervallo identificate per l'ambito corrente. Per altre informazioni, vedere Tipi anonimi. Quando una query crea un tipo denominato, restituisce un risultato di tipo IEnumerable<T> in cui T
è il tipo creato.
La clausola Select
può fare riferimento a qualsiasi variabile nell'ambito corrente. Sono incluse le variabili di intervallo identificate nella clausola From
(o nelle clausole From
). Include anche eventuali nuove variabili create con un alias dalle clausole Aggregate
, Let
, Group By
o Group Join
o dalle variabili di una clausola Select
precedente nell'espressione di query. La clausola Select
può includere anche valori statici. Nell'esempio di codice seguente, ad esempio, viene illustrata un'espressione di query in cui la clausola Select
definisce il risultato della query come nuovo tipo anonimo con quattro membri: ProductName
, Price
, Discount
e DiscountedPrice
. I valori dei membri ProductName
e Price
vengono ricavati dalla variabile dell'intervallo di prodotti definita nella clausola From
. Il valore DiscountedPrice
del membro viene calcolato nella clausola Let
. Il membro Discount
è un valore statico.
' 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 clausola Select
introduce un nuovo set di variabili di intervallo per le clausole di query successive e le variabili di intervallo precedenti non sono più nell'ambito. L'ultima clausola Select
in un'espressione di query determina il valore restituito della query. Ad esempio, la query seguente restituisce il nome della società e l'ID ordine per ogni ordine cliente per il quale il totale supera 500. La prima clausola Select
identifica le variabili di intervallo per la clausola Where
e la seconda clausola Select
. La seconda clausola Select
identifica i valori restituiti dalla query come nuovo tipo anonimo.
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
Se la clausola Select
identifica un singolo elemento da restituire, l'espressione di query restituisce una raccolta del tipo di tale singolo elemento. Se la clausola Select
identifica più elementi da restituire, l'espressione di query restituisce una raccolta di un nuovo tipo anonimo, in base agli elementi selezionati. Ad esempio, le due query seguenti restituiscono raccolte di due tipi diversi in base alla clausola Select
. La prima query restituisce una raccolta di nomi di società come stringhe. La seconda query restituisce una raccolta di oggetti Customer
popolati con i nomi e le informazioni sull'indirizzo della società.
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}
Esempio
Nell'espressione di query seguente viene utilizzata una clausola From
per dichiarare una variabile di intervallo cust
per la raccolta customers
. La clausola Select
seleziona il nome del cliente e il valore ID e popola le colonne CompanyName
e CustomerID
della nuova variabile di intervallo. L'istruzione For Each
esegue un ciclo su ogni oggetto restituito e visualizza le colonne CompanyName
e CustomerID
per ogni record.
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