Clausola Select (Visual Basic)
Aggiornamento: novembre 2007
Definisce il risultato di una query.
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.
Note
È possibile utilizzare la clausola Select per definire i risultati restituibili da una query. Questo permette di definire i membri di un nuovo tipo anonimo creato da una query, oppure di fare riferimento ai membri di un tipo denominato restituito da una query. La clausola Select non è obbligatoria per una query. Se non è specificata alcuna clausola Select, la query restituirà un tipo basato su tutti i membri delle variabili di intervallo identificate per l'ambito corrente. Per ulteriori informazioni, vedere Tipi anonimi. When a query creates a named type, it will return a result of type IEnumerable<T> where T is the created type.
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. Sono incluse anche tutte le nuove variabili create con un alias dalle clausole Aggregate, Let, Group By o Group Join oppure le variabili create da una clausola Select precedente nell'espressione di query. La clausola Select può includere anche valori statici. Nell'esempio di codice seguente 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 ottenuti dalla variabile di intervallo del prodotto definita nella clausola From. Il valore del membro DiscountedPrice 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 insieme di variabili di intervallo per le successive clausole della query e le precedenti variabili di intervallo non sono più in ambito. L'ultima clausola Select in un'espressione di query determina il valore restituito della query. Ad esempio, la query seguente restituisce il nome di azienda e l'ID ordine per ogni ordine del cliente per il quale il totale supera 500. La prima clausola Select identifica le variabili di intervallo per la clausola Where e per 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 solo elemento da restituire, l'espressione di query restituisce un insieme del tipo di quell'unico elemento. Se la clausola Select identifica più elementi da restituire, l'espressione di query restituisce un insieme di un nuovo tipo anonimo, basato sugli elementi selezionati. Ad esempio, nelle due query seguenti sono restituiti insiemi di due tipi diversi basati sulla clausola Select. La prima query restituisce un insieme di nomi di azienda come stringhe. La seconda query restituisce un insieme di oggetti Customer popolato con i nomi di azienda e le informazioni relative all'indirizzo.
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 l'insieme customers. La clausola Select seleziona il nome del cliente e valore ID e popola le colonne Name e ID della nuova variabile di intervallo. L'istruzione For Each esegue un ciclo per ogni oggetto restituito e visualizza le colonne Name e ID 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
Vedere anche
Concetti
Introduzione a LINQ in Visual Basic
Riferimenti
Clausola Order By (Visual Basic)