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