Clausola Select (Visual Basic)

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 (Visual Basic). Quando una query crea un tipo nominato, restituirà un risultato di tipo IEnumerable<T> dove 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. 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 della società 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 CompanyName e CustomerID della nuova variabile di intervallo. L'istruzione For Each esegue un ciclo per 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

Vedere anche

Riferimenti

Clausola From (Visual Basic)

Clausola Where (Visual Basic)

Clausola Order By (Visual Basic)

Concetti

Introduzione a LINQ in Visual Basic

Tipi anonimi (Visual Basic)

Altre risorse

Query (Visual Basic)