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

Viz také