Cláusula de associação de grupo (Visual Basic)
Combina duas coleções numa única coleção hierarquizada.A operação de associação é baseada em chaves correspondentes.
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 sendo juntada. |
type |
Opcional.O tipo de element.Se nenhum type for especificado, o tipo de element será inferido de collection. |
collection |
Obrigatório.A coleção a combinar com a coleção identificada no lado esquerdo do operador Group Join.A cláusula Group Join pode ser aninhada em uma cláusula Join ou outra cláusula Group Join. |
key1Equalskey2 |
Obrigatório.Identifica chaves para as coleções que estão sendo combinadas.Você deve usar o operador Equals para comparar chaves das coleções que estão sendo combinadas.Você pode combinar condições de associação, usando o operador And para identificar várias chaves.O parâmetro key1 deve ser da coleção no lado esquerdo do operador Join.O parâmetro key2 deve ser da coleção no lado direito do operador Join. As chavesa usadas na condição de adição podem ser expressões que incluem mais de um item da coleção.Entretanto, cada expressão chave pode conter somente itens da sua respectiva 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 palavra-chave Group (<alias> = Group).Você também pode incluir funções agregadas para aplicar ao grupo. |
Comentários
A cláusula Group Join combina duas coleções baseadas nos valores das chaves que combinam das coleções sendo combinadas.A coleção resultante pode conter um membro que referencia uma coleção de elementos da segunda coleção que corresponde ao valor de chave da coleção primeiro.Você também pode especificar funções agregadas para aplicar aos elementos agrupados da segunda coleção.Para obter mais informações sobre funções agregadas, consulte Cláusula Aggregate (Visual Basic).
Considere, por exemplo, uma coleção de gerentes e uma de funcionários.Elementos de ambos os conjuntos possuem uma propriedade ManagerID que identifica os funcionários que reportam a um gerente específico.Os resultados de uma operação de assovciação conterá um resultado para cada gerente e funcionário com um valor coincidente ManagerID.Os resultados de uma operação Group Join contém a lista completa dos gerentes.Cada gerente no resultado teria como membro membro a lista de funcionários que correpondem ao próprio.
O conjunto resultante de uma operação Group Join pode conter qualquer combinação de valores de coleção identificados na cláusula From e as expressões identificadas na cláusula Into da cláusula Group Join.Para obter mais informações sobre expressões válidas para a cláusula Into, consulte Cláusula Aggregate (Visual Basic).
Uma operação Group Join retornará todos os resultados da coleção identificada no lado esquerdo do operador Group Join.Isso é verdadeiro mesmo se não houver nenhuma correspondência na coleção sendo associado.É como um LEFT OUTER JOIN no SQL.
Você pode usar a cláusula Join para combinar coleções em uma única coleção hierárquica.Isso é equivalente a um INNER JOIN no SQL.
Exemplo
O exemplo de código a seguir une duas coleções usando a cláusula Group Join.
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
Referência
Selecione a cláusula (Visual Basic)
(Visual Basic) da cláusula FROM
(Visual Basic) da cláusula de associação
Onde a cláusula (Visual Basic)
Agrupar por cláusula (Visual Basic)
Conceitos
Introdução ao LINQ em Visual Basic