Clausola From (Visual Basic)
Specifica una o più variabili di intervallo e una raccolta su cui eseguire una query.
Sintassi
From element [ As type ] In collection [ _ ]
[, element2 [ As type2 ] In collection2 [, ... ] ]
Parti
Termine | Definizione |
---|---|
element |
Obbligatorio. Variabile di intervallo usata per scorrere gli elementi della raccolta. Una variabile di intervallo viene usata per fare riferimento a ogni membro di collection man mano che la query scorre l'oggetto collection . Deve essere un tipo enumerabile. |
type |
Facoltativo. Tipo di element . Se non viene specificato alcun valore type , il tipo di element viene dedotto da collection . |
collection |
Obbligatorio. Fa riferimento alla raccolta su cui eseguire una query. Deve essere un tipo enumerabile. |
Osservazioni:
La clausola From
viene usata per identificare i dati di origine per una query e le variabili utilizzate per fare riferimento a un elemento dalla raccolta di origine. Queste variabili prendono il nome di variabili di intervallo. La clausola From
è necessaria per una query, tranne quando la clausola Aggregate
viene usata per identificare una query che restituisce solo risultati aggregati. Per altre informazioni, vedere Clausola di aggregazione.
È possibile specificare più clausole From
in una query per identificare più raccolte da unire. Quando vengono specificate più raccolte, vengono iterate in modo indipendente oppure è possibile unirle se sono correlate. È possibile unire in modo implicito le raccolte usando la clausola Select
o in modo esplicito usando le clausole Join
o Group Join
. In alternativa, è possibile specificare più variabili di intervallo e raccolte in una singola clausola From
, con ogni variabile di intervallo correlata e raccolta separate dalle altre da una virgola. Nell'esempio di codice seguente vengono illustrate entrambe le opzioni di sintassi per la clausola From
.
' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2
' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
From var2 In collection2
La clausola From
definisce l'ambito di una query, simile all'ambito di un ciclo For
. Pertanto, ogni variabile di intervallo element
nell'ambito di una query deve avere un nome univoco. Poiché è possibile specificare più clausole From
per una query, le clausole From
successive possono fare riferimento alle variabili di intervallo nella clausola From
oppure possono fare riferimento a variabili di intervallo in una clausola From
precedente. Nell'esempio seguente, ad esempio, viene illustrata una clausola From
nidificata in cui la raccolta nella seconda clausola si basa su una proprietà della variabile di intervallo nella prima clausola.
Dim allOrders = From cust In GetCustomerList()
From ord In cust.Orders
Select ord
Ogni clausola From
può essere seguita da qualsiasi combinazione di clausole di query aggiuntive per perfezionare la query. È possibile perfezionare la query nei modi seguenti:
Combinare più raccolte in modo implicito usando le clausole
From
eSelect
o in modo esplicito usando le clausoleJoin
oGroup Join
.Usare la clausola
Where
per filtrare il risultato della query.Ordinare il risultato usando la clausola
Order By
.Raggruppare risultati simili usando la clausola
Group By
.Usare la clausola
Aggregate
per identificare le funzioni di aggregazione da valutare per l'intero risultato della query.Utilizzare la clausola
Let
per introdurre una variabile di iterazione il cui valore è determinato da un'espressione anziché da una raccolta.Usare la clausola
Distinct
per ignorare i risultati della query duplicati.Identificare parti del risultato da restituire usando le clausole
Skip
,Take
,Skip While
eTake While
.
Esempio
Nell'espressione di query seguente viene utilizzata una clausola From
per dichiarare una variabile di intervallo cust
per ogni oggetto Customer
dell'insieme customers
. La clausola Where
usa la variabile di intervallo per limitare l'output ai clienti dall'area specificata. Il ciclo For Each
visualizza il nome della società per ogni cliente nel risultato della query.
Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
ByVal region As String)
Dim customersForRegion = From cust In customers
Where cust.Region = region
For Each cust In customersForRegion
Console.WriteLine(cust.CompanyName)
Next
End Sub