Partager via


Concaténer deux séquences

Utilisez l'opérateur Concat pour concaténer deux séquences.

L’opérateur Concat est défini pour les multijeux ordonnés pour lesquels l’ordre du destinataire et de l’argument est identique.

Le classement dans SQL est la dernière étape avant la génération des résultats. Par conséquent, l’opérateur Concat est implémenté en utilisant UNION ALL et ne conserve pas l’ordre de ses arguments. Pour vérifier que le classement est correct dans les résultats, assurez-vous de classer les résultats explicitement.

Exemple 1

Cet exemple utilise Concat pour retourner une séquence de tous les numéros de téléphone et de télécopie de Customer et 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

Exemple 2

Cet exemple utilise Concat pour retourner une séquence de tous les mappages de nom et de numéro de téléphone de Customer et 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

Voir aussi