Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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