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 e Select o in modo esplicito usando le clausole Join o Group 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 e Take 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

Vedi anche