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

Viz také