Clausola Group Join (Visual Basic)
Aggiornamento: novembre 2007
Combina due insiemi in un unico insieme gerarchico. L'operazione di join è basata sulla corrispondenza di chiavi.
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
Parti
element
Obbligatorio. Variabile di controllo per l'insieme da unire.type
Facoltativo. Tipo di element. Se non è specificato alcun type, il tipo di element viene dedotto da collection.collection
Obbligatorio. L'insieme da combinare con l'insieme sul lato sinistro dell'operatore Group Join. Una clausola Group Join può essere nidificata in una clausola Join o in un'altra clausola Group Join.key1Equalskey2
Obbligatorio. Identifica le chiavi per gli insiemi da unire. È necessario utilizzare l'operatore Equals per confrontare le chiavi dagli insiemi da unire. È possibile combinare condizioni di join utilizzando l'operatore And per identificare più chiavi. Il parametro key1 deve provenire dall'insieme sul lato sinistro dell'operatore Join. Il parametro key2 deve provenire dall'insieme sul lato destro dell'operatore Join.Le chiavi utilizzate nella condizione di join possono essere espressioni che includono più di un elemento dell'insieme. Tuttavia ogni espressione di chiave può contenere solo elementi del rispettivo insieme.
expressionList
Obbligatorio. Una o più espressioni che identificano come vengono aggregati i gruppi di elementi dell'insieme. Per identificare un nome di membro per i risultati raggruppati, utilizzare la parola chiave Group (<alias> = Group). È anche possibile includere funzioni di aggregazione da applicare al gruppo.
Note
La clausola Group Join combina due insiemi in base ai valori chiave corrispondenti degli insiemi da unire. L'insieme risultante può contenere un membro che fa riferimento a un insieme di elementi dal secondo insieme che corrispondono al valore della chiave del primo insieme. È anche possibile specificare funzioni di aggregazione da applicare agli elementi raggruppati del secondo insieme. Per ulteriori informazioni sulle funzioni di aggregazione, vedere Clausola di aggregazione (Visual Basic).
Si consideri, ad esempio, un insieme di amministratori e un insieme di dipendenti. Gli elementi di entrambi gli insiemi hanno una proprietà ManagerID che identifica i dipendenti che riportano a un particolare amministratore. I risultati di un'operazione di join conterrebbero un risultato per ogni amministratore e ogni dipendente con valore corrispondente di ManagerID. I risultati di un'operazione Group Join conterrebbero l'elenco completo degli amministratori. Ogni amministratore nel risultato avrebbe un membro che fa riferimento all'elenco dei dipendenti che hanno una corrispondenza con lo specifico amministratore.
L'insieme risultante per un'operazione Group Join può contenere qualsiasi combinazione dei valori dell'insieme identificato nella clausola From e delle espressioni identificate nella clausola Into della clausola Group Join. Per ulteriori informazioni sulle espressioni valide per la clausola Into, vedere Clausola di aggregazione (Visual Basic).
Un'operazione Group Join restituirà tutti i risultati dell'insieme identificato sul lato sinistro dell'operatore Group Join Questo si verifica anche se non esistono corrispondenze tra gli insiemi da unire. Equivale a LEFT OUTER JOIN in SQL.
È possibile utilizzare la clausola Join per combinare più insiemi in un unico insieme. Equivale ad un INNER JOIN in SQL.
Esempio
Nell'esempio di codice seguente vengono uniti due insiemi utilizzando la clausola Group Join.
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
Concetti
Introduzione a LINQ in Visual Basic
Riferimenti
Clausola Select (Visual Basic)
Clausola Group By (Visual Basic)