Twee reeksen samenvoegen
Gebruik de Concat operator om twee reeksen samen te voegen.
De Concat operator wordt gedefinieerd voor geordende multisets waarbij de orders van de ontvanger en het argument hetzelfde zijn.
Bestellen in SQL is de laatste stap voordat de resultaten worden geproduceerd. Daarom wordt de Concat operator geïmplementeerd met behulp van UNION ALL
en behoudt de volgorde van de argumenten niet. Als u ervoor wilt zorgen dat volgorde juist is in de resultaten, moet u de resultaten expliciet ordenen.
Voorbeeld 1
In dit voorbeeld wordt gebruikgemaakt Concat van het retourneren van een reeks alle Customer
en Employee
telefoonnummers en faxnummers.
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
Voorbeeld 2
In dit voorbeeld wordt een Concat reeks van alle Customer
toewijzingen en Employee
namen en telefoonnummers geretourneerd.
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