Partilhar via


Cláusula de associação de grupo (Visual Basic)

Combina duas coleções em uma única coleção hierárquica. A operação de junção é baseada em chaves correspondentes.

Sintaxe

Group Join element [As type] In collection _  
  On key1 Equals key2 [ And key3 Equals key4 [... ] ] _  
  Into expressionList  

Partes

Termo Definição
element Obrigatório. A variável de controle para a coleção que está sendo associada.
type Opcional. O tipo de element. Se não type for especificado, o tipo de é inferido a partir de element collection.
collection Obrigatório. A coleção a combinar com a coleção que está no lado esquerdo do Group Join operador. Uma Group Join cláusula pode ser aninhada em uma Join cláusula ou em outra Group Join cláusula.
key1 Equals key2 Obrigatório. Identifica chaves para as coleções que estão sendo unidas. Você deve usar o Equals operador para comparar chaves das coleções que estão sendo unidas. Você pode combinar condições de junção usando o And operador para identificar várias chaves. O key1 parâmetro deve ser da coleção no lado esquerdo do Join operador. O key2 parâmetro deve ser da coleção do lado direito do Join operador.

As chaves usadas na condição de junção podem ser expressões que incluem mais de um item da coleção. No entanto, cada expressão de chave pode conter apenas itens de sua respetiva coleção.
expressionList Obrigatório. Uma ou mais expressões que identificam como os grupos de elementos da coleção são agregados. Para identificar um nome de membro para os resultados agrupados, use a Group palavra-chave (<alias> = Group). Você também pode incluir funções agregadas para aplicar ao grupo.

Observações

A Group Join cláusula combina duas coleções com base na correspondência de valores-chave das coleções que estão sendo unidas. A coleção resultante pode conter um membro que faz referência a uma coleção de elementos da segunda coleção que correspondem ao valor da chave da primeira coleção. Você também pode especificar funções de agregação a serem aplicadas aos elementos agrupados da segunda coleção. Para obter informações sobre funções agregadas, consulte Cláusula agregada.

Considere, por exemplo, uma coleção de gerentes e uma coleção de funcionários. Os elementos de ambas as coleções têm uma propriedade ManagerID que identifica os funcionários que se reportam a um gerente específico. Os resultados de uma operação de junção conteriam um resultado para cada gerente e funcionário com um valor ManagerID correspondente. Os resultados de uma Group Join operação conteriam a lista completa dos gestores. Cada resultado de gerente teria um membro que referenciasse a lista de funcionários que correspondiam ao gerente específico.

A coleção resultante de uma Group Join operação pode conter qualquer combinação de valores da coleção identificada na From cláusula e as expressões identificadas na Into cláusula da Group Join cláusula. Para obter mais informações sobre expressões válidas para a Into cláusula, consulte Cláusula agregada.

Uma Group Join operação devolverá todos os resultados da recolha identificados no lado esquerdo do Group Join operador. Isto é verdade mesmo que não haja correspondências na coleção que está sendo juntada. Isto é como um LEFT OUTER JOIN em SQL.

Você pode usar a Join cláusula para combinar coleções em uma única coleção. Isso é equivalente a um INNER JOIN em SQL.

Exemplo

O exemplo de código a seguir une duas coleções usando a Group Join cláusula .

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

Consulte também