Group Join (Cláusula, Visual Basic)

Actualización: noviembre 2007

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

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

Partes

  • element
    Necesario. Variable de control de la colección que se va a combinar.

  • type
    Opcional. Tipo de element. Si no se especifica ningún type, el tipo de element se infiere de collection.

  • collection
    Necesario. Colección que se va a combinar con la colección que está a la izquierda del operador Group Join. Una cláusula Group Join puede estar anidada en una cláusula Join o en otra cláusula Group Join.

  • key1Equalskey2
    Necesario. Identifica las claves de las colecciones que se van a combinar. Debe usar el operador Equals para comparar las claves de las colecciones que se van a combinar. Puede combinar las condiciones de combinación mediante el operador And para identificar varias claves. El parámetro key1 debe ser de la colección de la izquierda del operador Join. El parámetro key2 debe ser de la colección de la derecha del operador Join.

    Las claves que se usan 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 solamente puede contener elementos de su colección respectiva.

  • expressionList
    Necesario. Una o más expresiones que identifican cómo se agregan los grupos de elementos desde la colección. Para identificar un nombre de miembro de los resultados agrupados, utilice la palabra clave Group (<alias> = Group). También puede incluir las funciones de agregado que se van a aplicar al grupo.

Comentarios

La cláusula Group Join combina dos colecciones basándose en los valores de clave coincidentes de las colecciones que se van a combinar. La colección resultante puede contener un miembro que haga referencia a una colección de elementos de la segunda colección que coincidan con el valor de clave de la primera colección. También puede especificar las funciones de agregado que se van a aplicar a los elementos agrupados de la segunda colección. Para obtener información acerca de las funciones de agregado, vea Aggregate (Cláusula, Visual Basic).

Por ejemplo, considere una colección de administradores y una colección de empleados. Los elementos de ambas colecciones tienen una propiedad ManagerID que identifica a los empleados que informan a un administrador concreto. Los resultados de una operación de combinación contendrían un resultado por cada administrador y empleado con un valor ManagerID coincidente. Los resultados de una operación de Group Join contendrían la lista completa de administradores. Cada resultado de administrador tendría un miembro que hizo referencia a la lista de empleados que fueron una coincidencia para el administrador concreto.

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

Una operación de Group Join devolverá todos los resultados de la colección identificada a la izquierda del operador Group Join Esto es así aunque no haya ninguna coincidencia en la colección que se está combinando y equivale a LEFT OUTER JOIN en SQL.

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

Ejemplo

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

Vea también

Conceptos

Introducción a LINQ en Visual Basic

Referencia

Select (Cláusula, Visual Basic)

From (Cláusula, Visual Basic)

Join (Cláusula, Visual Basic)

Where (Cláusula, Visual Basic)

Group By (Cláusula, Visual Basic)

Otros recursos

Consultas (Visual Basic)