Compartir a través de


Cláusula Group Join (Visual Basic)

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

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 se especifica , type el tipo de element se deduce de collection.
collection Obligatorio. 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 Join cláusula o en otra Group Join cláusula.
key1 Equals key2 Obligatorio. Identifica las claves de las colecciones que se van a unir. Debe usar el Equals operador para comparar las claves de las colecciones que se van a unir. Puede combinar condiciones de combinación mediante el And operador para identificar varias claves. El key1 parámetro debe ser de la colección en el lado izquierdo del Join operador. El key2 parámetro debe ser de la colección en el 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 respectiva.
expressionList Obligatorio. 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 que se aplicarán al grupo.

Observaciones

La Group Join cláusula combina dos colecciones basadas en valores 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 coincida 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 Cláusula Aggregate.

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 a los empleados que informan a un administrador determinado. Los resultados de una operación de unión contendrán un resultado para cada administrador y empleado con un valor de ManagerID coincidente. Los resultados de una Group Join operación contendrán la lista completa de administradores. Cada resultado del administrador tendría un miembro que hacía referencia a la lista de empleados que eran una coincidencia para el administrador específico.

La colección resultante de una Group Join operación puede contener cualquier combinación de valores de la colección identificada en la From cláusula y las expresiones identificadas en la Into cláusula de la Group Join cláusula . Para obtener más información sobre las expresiones válidas para la Into 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 cierto incluso si no hay coincidencias en la colección que se va a unir. Esto es como en LEFT OUTER JOIN SQL.

Puede usar la Join cláusula para combinar colecciones en una sola colección. Esto equivale a en INNER JOIN 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

Consulte también