Group Join – klauzule (Visual Basic)
Kombinuje dvě kolekce do jedné hierarchické kolekce. Operace spojení je založená na odpovídajících klíčích.
Syntaxe
Group Join element [As type] In collection _
On key1 Equals key2 [ And key3 Equals key4 [... ] ] _
Into expressionList
Součástky
Pojem | definice |
---|---|
element |
Povinný: Řídicí proměnná pro kolekci, která je připojena. |
type |
Nepovinné. Typ .element Pokud není zadána žádná type hodnota, typ element je odvozen z collection . |
collection |
Povinný: Kolekce, která se má kombinovat s kolekcí, která je na levé straně operátoru Group Join . Group Join Klauzuli lze vnořit do Join klauzule nebo v jiné Group Join klauzuli. |
key1 Equals key2 |
Povinný: Identifikuje klíče pro spojené kolekce. Operátor musíte použít Equals k porovnání klíčů z připojených kolekcí. Podmínky spojení můžete kombinovat pomocí operátoru And k identifikaci více klíčů. Parametr key1 musí být z kolekce na levé straně operátoru Join . Parametr key2 musí být z kolekce na pravé straně operátoru Join .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ý výraz klíče však může obsahovat pouze položky z příslušné kolekce. |
expressionList |
Povinný: Jeden nebo více výrazů, které identifikují agregaci skupin prvků z kolekce. K identifikaci názvu člena pro seskupené výsledky použijte Group klíčové slovo (<alias> = Group ). Můžete také zahrnout agregační funkce, které se mají použít pro skupinu. |
Poznámky
Klauzule Group Join
kombinuje dvě kolekce na základě odpovídajících hodnot klíče z připojených kolekcí. Výsledná kolekce může obsahovat člena, který odkazuje na kolekci prvků z druhé kolekce, která odpovídá 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ří hlásí určitému manažeru. 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 Group Join
by obsahovaly úplný seznam manažerů. Každý výsledek manažera by měl člena, který odkazoval na seznam zaměstnanců, kteří se shodovali s konkrétním manažerem.
Kolekce vyplývající z Group Join
operace může obsahovat libovolnou kombinaci hodnot z kolekce identifikované v From
klauzuli a výrazy identifikované v Into
klauzuli Group Join
klauzule. Další informace o platných výrazech pro Into
klauzuli naleznete v tématu Aggregate Clause.
Group Join
Operace vrátí všechny výsledky z kolekce identifikované na levé straně operátoruGroup Join
. To platí i v případě, že se v kolekci nepřipojí žádné shody. To je jako LEFT OUTER JOIN
v SQL.
Klauzuli Join
můžete použít ke kombinování kolekcí 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