Clausola Group Join (Visual Basic)
Combina due raccolte in un'unica 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 in fase di aggiunta. |
type |
Facoltativo. Tipo di element . Se non viene specificato alcun valore type , il tipo di element viene dedotto da collection . |
collection |
Obbligatorio. Raccolta da combinare con quella che si trova sul lato sinistro dell'operatore Group Join . Una clausola Group Join può essere annidata in una clausola Join o in un'altra clausola Group Join . |
key1 Equals key2 |
Obbligatorio. Identifica le chiavi per le raccolte in fase di aggiunta. È necessario usare l'operatore Equals per confrontare le chiavi delle raccolte in fase di aggiunta. È possibile combinare le condizioni di join usando l'operatore And per identificare più chiavi. Il parametro key1 deve provenire dalla raccolta a sinistra dell'operatore Join . Il parametro key2 deve provenire dalla raccolta a destra 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 come vengono aggregati i gruppi di elementi dalla raccolta. Per identificare un nome di membro per i risultati raggruppati, usare la parola chiave Group (<alias> = Group ). È anche possibile includere funzioni di aggregazione da applicare al gruppo. |
Osservazioni:
La clausola Group Join
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 fanno capo 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 manager. Ogni risultato del manager avrebbe un membro con riferimento all'elenco di dipendenti corrispondenti al manager specifico.
La raccolta risultante da un'operazione Group Join
può contenere qualsiasi combinazione di valori della raccolta identificata nella clausola From
e le espressioni identificate nella clausola Into
della clausola Group Join
. Per altre informazioni sulle espressioni valide per la clausola Into
, 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. È come un LEFT OUTER JOIN
in SQL.
È possibile usare la clausola Join
per combinare le raccolte in una singola raccolta. È l'equivalente di un INNER JOIN
in SQL.
Esempio
Nell'esempio di codice seguente vengono unite due raccolte usando 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