Compartir vía


Concatenar dos secuencias

Utilice el operador Concat para concatenar dos secuencias.

El operador Concat se define para conjuntos múltiples ordenados en los que el orden del receptor y del argumento son el mismo.

En SQL, la ordenación es el último paso antes de que se generen los resultados. Por esta razón, el operador Concat se implementa utilizando UNION ALL y no conserva el orden de sus argumentos. Para garantizar que el orden de los resultados es correcto, no olvide ordenar los resultados explícitamente.

Ejemplo 1

En este ejemplo se utiliza Concat para devolver una secuencia de todos los números de teléfono y fax de Customer y Employee.

IQueryable<String> custQuery =
    (from cust in db.Customers
    select cust.Phone)
    .Concat
    (from cust in db.Customers
    select cust.Fax)
    .Concat
    (from emp in db.Employees
    select emp.HomePhone)
;

foreach (var custData in custQuery)
{
    Console.WriteLine(custData);
}

Dim custQuery = _
    (From c In db.Customers _
     Select c.Phone) _
    .Concat _
    (From c In db.Customers _
     Select c.Fax) _
    .Concat _
    (From e In db.Employees _
     Select e.HomePhone)

For Each custData In custQuery
    Console.WriteLine(custData)
Next

Ejemplo 2

En este ejemplo se utiliza Concat para devolver una secuencia de todas las asignaciones de números de teléfono y nombres de Customer y Employee.

var infoQuery =
    (from cust in db.Customers
    select new { Name = cust.CompanyName, cust.Phone }
    )
   .Concat
       (from emp in db.Employees
       select new
       {
           Name = emp.FirstName + " " + emp.LastName,
           Phone = emp.HomePhone
       }
       );

foreach (var infoData in infoQuery)
{
    Console.WriteLine("Name = {0}, Phone = {1}",
        infoData.Name, infoData.Phone);
}
Dim infoQuery = _
    (From cust In db.Customers _
     Select Name = cust.CompanyName, Phone = cust.Phone) _
    .Concat _
        (From emp In db.Employees _
         Select Name = emp.FirstName & " " & emp.LastName, _
             Phone = emp.HomePhone)

For Each infoData In infoQuery
    Console.WriteLine("Name = " & infoData.Name & _
        ", Phone = " & infoData.Phone)
Next

Consulte también