Condividi tramite


Clausola Group Join (Visual Basic)

Combina due raccolte in una singola raccolta gerarchica. L'operazione di join è basata sulle chiavi corrispondenti.

Sintassi

Group Join element [As type] In collection _  
  On key1 Equals key2 [ And key3 Equals key4 [... ] ] _  
  Into expressionList  

Parti

Termine Definizione
element Obbligatorio. Variabile di controllo per la raccolta unita in join.
type Opzionale. Tipo di element. Se non viene specificato alcun type valore, il tipo di element viene dedotto da collection.
collection Obbligatorio. Raccolta da combinare con la raccolta che si trova sul lato sinistro dell'operatore Group Join . Una Group Join clausola può essere annidata in una Join clausola o in un'altra Group Join clausola.
key1 Equals key2 Obbligatorio. Identifica le chiavi per le raccolte aggiunte. È necessario usare l'operatore Equals per confrontare le chiavi delle raccolte unite in join. È possibile combinare le condizioni di join usando l'operatore And per identificare più chiavi. Il key1 parametro deve essere dalla raccolta sul lato sinistro dell'operatore Join . Il key2 parametro deve essere dalla raccolta sul lato destro dell'operatore Join .

Le chiavi usate nella condizione di join possono essere espressioni che includono più elementi della raccolta. Tuttavia, ogni espressione chiave può contenere solo elementi della rispettiva raccolta.
expressionList Obbligatorio. Una o più espressioni che identificano la modalità di aggregazione dei gruppi di elementi della raccolta. Per identificare un nome di membro per i risultati raggruppati, usare la Group parola chiave (<alias> = Group). È anche possibile includere funzioni di aggregazione da applicare al gruppo.

Osservazioni:

La Group Join clausola combina due raccolte in base ai valori di chiave corrispondenti delle raccolte unite in join. La raccolta risultante può contenere un membro che fa riferimento a una raccolta di elementi della seconda raccolta che corrispondono al valore della chiave della prima raccolta. È anche possibile specificare funzioni di aggregazione da applicare agli elementi raggruppati della seconda raccolta. Per informazioni sulle funzioni di aggregazione, vedere Clausola di aggregazione.

Si consideri, ad esempio, una raccolta di manager e una raccolta di dipendenti. Gli elementi di entrambe le raccolte hanno una proprietà ManagerID che identifica i dipendenti che segnalano a un determinato manager. I risultati di un'operazione di join contengono un risultato per ogni responsabile e dipendente con un valore ManagerID corrispondente. I risultati di un'operazione Group Join conterranno l'elenco completo dei responsabili. Ogni risultato del manager avrebbe un membro che ha fatto riferimento all'elenco di dipendenti che erano una corrispondenza per il responsabile specifico.

La raccolta risultante da un'operazione Group Join può contenere qualsiasi combinazione di valori della raccolta identificata nella From clausola e le espressioni identificate nella Into clausola della Group Join clausola . Per altre informazioni sulle espressioni valide per la Into clausola , vedere Clausola di aggregazione.

Un'operazione Group Join restituirà tutti i risultati della raccolta identificata sul lato sinistro dell'operatore Group Join . Questo vale anche se non sono presenti corrispondenze nella raccolta da unire. Questo è come in LEFT OUTER JOIN SQL.

È possibile usare la Join clausola per combinare le raccolte in una singola raccolta. Equivale a un INNER JOIN oggetto in SQL.

Esempio

Nell'esempio di codice seguente vengono unite due raccolte usando la Group Join clausola .

Dim customerList = From cust In customers
                   Group Join ord In orders On
                   cust.CustomerID Equals ord.CustomerID
                   Into CustomerOrders = Group,
                        OrderTotal = Sum(ord.Total)
                   Select cust.CompanyName, cust.CustomerID,
                          CustomerOrders, OrderTotal

For Each customer In customerList
    Console.WriteLine(customer.CompanyName &
                      " (" & customer.OrderTotal & ")")

    For Each order In customer.CustomerOrders
        Console.WriteLine(vbTab & order.OrderID & ": " & order.Total)
    Next
Next

Vedere anche