Clausola Select (Visual Basic)Select Clause (Visual Basic)

Definisce il risultato di una query.Defines the result of a query.

SintassiSyntax

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

PartiParts

var1
Facoltativa.Optional. Alias che può essere utilizzato per fare riferimento ai risultati dell'espressione di colonna.An alias that can be used to reference the results of the column expression.

fieldName1
Obbligatoria.Required. Nome del campo da restituire nel risultato della query.The name of the field to return in the query result.

NoteRemarks

È possibile utilizzare la clausola Select per definire i risultati che devono essere restituiti da una query.You can use the Select clause to define the results to return from a query. Ciò consente di definire i membri di un nuovo tipo anonimo creato da una query o di destinare i membri di un tipo denominato restituito da una query.This enables you to either define the members of a new anonymous type that is created by a query, or to target the members of a named type that is returned by a query. La clausola Select non è obbligatoria per una query.The Select clause is not required for a 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.If no Select clause is specified, the query will return a type based on all members of the range variables identified for the current scope. Per altre informazioni, vedere Tipi anonimi.For more information, see Anonymous Types. Quando una query crea un tipo denominato, viene restituito un risultato di tipo IEnumerable<T> dove T è il tipo creato.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.The Select clause can reference any variables in the current scope. Sono incluse le variabili di intervallo identificate nella clausola From o From clausole.This includes range variables identified in the From clause (or From clauses). Include anche tutte le nuove variabili create con un alias dalle clausole Aggregate, Let, Group Byo Group Join o dalle variabili di una clausola di Select precedente nell'espressione di query.It also includes any new variables created with an alias by the Aggregate, Let, Group By, or Group Join clauses, or variables from a previous Select clause in the query expression. La clausola Select può includere anche valori statici.The Select clause can also include static values. 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, Discounte DiscountedPrice.For example, the following code example shows a query expression in which the Select clause defines the query result as a new anonymous type with four members: ProductName, Price, Discount, and DiscountedPrice. I valori dei membri ProductName e Price sono ricavati dalla variabile di intervallo di prodotti definita nella clausola From.The ProductName and Price member values are taken from the product range variable that is defined in the From clause. Il valore del membro DiscountedPrice viene calcolato nella clausola Let.The DiscountedPrice member value is calculated in the Let clause. Il Discount membro è un valore statico.The Discount member is a static value.

' 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.The Select clause introduces a new set of range variables for subsequent query clauses, and previous range variables are no longer in scope. L'ultima clausola Select in un'espressione di query determina il valore restituito dalla query.The last Select clause in a query expression determines the return value of the query. Ad esempio, la query seguente restituisce il nome e l'ID dell'azienda per ogni ordine cliente per il quale il totale supera 500.For example, the following query returns the company name and order ID for every customer order for which the total exceeds 500. La prima clausola Select identifica le variabili di intervallo per la clausola Where e la seconda clausola Select.The first Select clause identifies the range variables for the Where clause and the second Select clause. La seconda clausola Select identifica i valori restituiti dalla query come un nuovo tipo anonimo.The second Select clause identifies the values returned by the query as a new anonymous 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

Se la clausola Select identifica un singolo elemento da restituire, l'espressione di query restituisce una raccolta del tipo di quel singolo elemento.If the Select clause identifies a single item to return, the query expression returns a collection of the type of that single item. 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.If the Select clause identifies multiple items to return, the query expression returns a collection of a new anonymous type, based on the selected items. Ad esempio, le due query seguenti restituiscono raccolte di due tipi diversi in base alla clausola Select.For example, the following two queries return collections of two different types based on the Select clause. La prima query restituisce una raccolta di nomi di società come stringhe.The first query returns a collection of company names as strings. La seconda query restituisce una raccolta di oggetti Customer popolati con i nomi e le informazioni sull'indirizzo della società.The second query returns a collection of Customer objects populated with the company names and address information.

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}

EsempioExample

Nell'espressione di query seguente viene utilizzata una clausola From per dichiarare una variabile di intervallo cust per la raccolta di customers.The following query expression uses a From clause to declare a range variable cust for the customers collection. La clausola Select seleziona il nome e il valore ID del cliente e popola le colonne CompanyName e CustomerID della nuova variabile di intervallo.The Select clause selects the customer name and ID value and populates the CompanyName and CustomerID columns of the new range variable. L'istruzione For Each esegue il ciclo di ogni oggetto restituito e visualizza le colonne CompanyName e CustomerID per ogni record.The For Each statement loops over each returned object and displays the CompanyName and CustomerID columns for each 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 ancheSee also