Group Join (Cláusula, Visual Basic)

Combina dos colecciones en una sola colección jerárquica. La operación de combinación se basa en claves que coinciden.

Sintaxis

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

Partes

Término Definición
element Obligatorio. Variable de control para la colección que se va a unir.
type Opcional. Tipo de element. Si no type se especifica ningún , el tipo de se deduce de element collection .
collection Necesario. Colección que se va a combinar con la colección que se encuentra en el lado izquierdo del Group Join operador . Una Group Join cláusula se puede anidar en una cláusula o en otra Join Group Join cláusula.
key1 Equals key2 Necesario. Identifica las claves para las colecciones que se unen. Debe usar el operador Equals para comparar las claves de las colecciones que se están unida. Puede combinar condiciones de combinación mediante el operador And para identificar varias claves. El key1 parámetro debe ser de la colección del lado izquierdo del Join operador. El key2 parámetro debe ser de la colección del lado derecho del Join operador.

Las claves usadas en la condición de combinación pueden ser expresiones que incluyen más de un elemento de la colección. Sin embargo, cada expresión de clave solo puede contener elementos de su colección correspondiente.
expressionList Necesario. Una o varias expresiones que identifican cómo se agregan los grupos de elementos de la colección. Para identificar un nombre de miembro para los resultados agrupados, use la Group palabra clave ( <alias> = Group ). También puede incluir funciones de agregado para aplicar al grupo.

Comentarios

La Group Join cláusula combina dos colecciones basadas en los valores de clave correspondientes de las colecciones que se están combinando. La colección resultante puede contener un miembro que hace referencia a una colección de elementos de la segunda colección que coinciden con el valor de clave de la primera colección. También puede especificar funciones de agregado que se aplicarán a los elementos agrupados de la segunda colección. Para obtener información sobre las funciones de agregado, vea Aggregate Clause.

Considere, por ejemplo, una colección de administradores y una colección de empleados. Los elementos de ambas colecciones tienen una propiedad ManagerID que identifica los empleados que informan a un administrador determinado. Los resultados de una operación de combinación contendrán un resultado para cada administrador y empleado con un valor de ManagerID correspondiente. Los resultados de Group Join una operación contendrán la lista completa de administradores. Cada resultado del administrador tendría un miembro que hace referencia a la lista de empleados que coinciden con el administrador específico.

La colección resultante de una operación puede contener cualquier combinación de valores de la colección identificada en la cláusula y las Group Join From expresiones identificadas en la cláusula de la cláusula Into Group Join . Para obtener más información sobre las expresiones válidas para Into la cláusula , vea Aggregate Clause.

Una Group Join operación devolverá todos los resultados de la colección identificada en el lado izquierdo del Group Join operador. Esto es así incluso si no hay coincidencias en la colección que se va a unir. Esto es como un LEFT OUTER JOIN en SQL.

Puede usar la cláusula Join para combinar colecciones en una sola colección. Esto equivale a un INNER JOIN en SQL.

Ejemplo

En el ejemplo de código siguiente se unen dos colecciones mediante la 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

Consulta también