Group Join – klauzule (Visual Basic)
Kombinuje dvě kolekce do jedné hierarchické kolekce. Operace spojení je založená na odpovídajících klíčích.
Syntax
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
Součásti
| Pojem | Definice |
|---|---|
element |
Povinná hodnota. Řídicí proměnná pro kolekci, která je připojena. |
type |
Nepovinný parametr. Typ element . Pokud není type zadaný žádný, typ element je odvozen z collection . |
collection |
Povinná hodnota. Kolekce, která se má kombinovat s kolekcí, která je na levé straně Group Join operátoru. Klauzule Group Join může být vnořená v Join klauzuli nebo v jiné Group Join klauzuli. |
key1 Equals key2 |
Povinná hodnota. Identifikuje klíče pro kolekce, které jsou připojeny. K porovnání klíčů z připojených kolekcí je nutné použít Equals operátor . Podmínky spojení můžete kombinovat pomocí And operátoru k identifikaci více klíčů. Parametr key1 musí být z kolekce na levé straně Join operátoru. Parametr key2 musí být z kolekce na pravé straně Join operátoru.Klíče použité v podmínce spojení mohou být výrazy, které obsahují více než jednu položku z kolekce. Každý klíčový výraz však může obsahovat pouze položky z příslušné kolekce. |
expressionList |
Povinná hodnota. Jeden nebo více výrazů, které identifikují způsob agregace skupin prvků z kolekce. Pokud chcete identifikovat název člena pro seskupené výsledky, použijte Group klíčové slovo ( <alias> = Group ). Můžete také zahrnout agregační funkce, které se použijí pro skupinu. |
Poznámky
Klauzule Group Join kombinuje dvě kolekce na základě odpovídajících hodnot klíčů z připojených kolekcí. Výsledná kolekce může obsahovat člen, který odkazuje na kolekci prvků z druhé kolekce, které odpovídají hodnotě klíče z první kolekce. Můžete také zadat agregační funkce, které se použijí na seskupené prvky z druhé kolekce. Informace o agregačních funkcích najdete v tématu Agregační klauzule.
Představte si například kolekci manažerů a kolekci zaměstnanců. Prvky z obou kolekcí mají vlastnost ManagerID, která identifikuje zaměstnance, kteří se hlásí konkrétnímu manažerovi. Výsledky operace spojení by obsahovaly výsledek pro každého manažera a zaměstnance s odpovídající hodnotou ManagerID. Výsledky operace by Group Join obsahovaly úplný seznam manažerů. Každý výsledek manažera by měl člen, který odkazuje na seznam zaměstnanců, kteří se shodují s konkrétním manažerem.
Kolekce, která je výsledkem operace, může obsahovat libovolnou kombinaci hodnot z kolekce identifikované v klauzuli a výrazů identifikovaných Group Join From v Into klauzuli Group Join klauzule . Další informace o platných výrazech pro Into klauzuli najdete v tématu Aggregate – klauzule.
Operace Group Join vrátí všechny výsledky z kolekce identifikované na levé straně Group Join operátoru. To platí i v případě, že v kolekci, která je připojena, nejsou žádné shody. Je to jako v LEFT OUTER JOIN SQL.
Pomocí klauzule Join můžete kombinovat kolekce do jedné kolekce. To je ekvivalentem v INNER JOIN SQL.
Příklad
Následující příklad kódu spojí dvě kolekce pomocí Group Join klauzule .
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