Condividi tramite


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 utilizzata per scorrere gli elementi della raccolta. Una variabile di intervallo viene usata per fare riferimento a ogni membro di collection come la query scorre l'oggetto collection. Deve essere un tipo enumerabile.
type Opzionale. Tipo di element. Se non viene specificato alcun type valore, 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 From clausola 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 sono denominate variabili di intervallo. La From clausola è necessaria per una query, tranne quando la Aggregate clausola viene usata per identificare una query che restituisce solo risultati aggregati. Per altre informazioni, vedere Clausola di aggregazione.

È possibile specificare più From clausole 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 Select clausola o in modo esplicito usando le Join clausole o Group Join . In alternativa, è possibile specificare più variabili di intervallo e raccolte in una singola From clausola, 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 From clausola .

' 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 From clausola definisce l'ambito di una query, simile all'ambito di un For ciclo. Pertanto, ogni element variabile di intervallo nell'ambito di una query deve avere un nome univoco. Poiché è possibile specificare più From clausole per una query, le clausole successive From possono fare riferimento alle variabili di intervallo nella From clausola oppure possono fare riferimento a variabili di intervallo in una clausola precedente From . Nell'esempio seguente, ad esempio, viene illustrata una clausola nidificata From 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 From clausola 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 From clausole e Select o in modo esplicito usando le Join clausole o Group Join .

  • Usare la Where clausola per filtrare il risultato della query.

  • Ordinare il risultato usando la Order By clausola .

  • Raggruppare risultati simili usando la Group By clausola .

  • Usare la Aggregate clausola per identificare le funzioni di aggregazione da valutare per l'intero risultato della query.

  • Utilizzare la Let clausola per introdurre una variabile di iterazione il cui valore è determinato da un'espressione anziché da una raccolta.

  • Usare la Distinct clausola per ignorare i risultati della query duplicati.

  • Identificare parti del risultato da restituire usando le Skipclausole , TakeSkip While, e Take While .

Esempio

Nell'espressione di query seguente viene utilizzata una From clausola per dichiarare una variabile cust di intervallo per ogni Customer oggetto dell'insieme customers . La Where clausola usa la variabile di intervallo per limitare l'output ai clienti dall'area specificata. Il For Each ciclo 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

Vedere anche