Freigeben über


Vorgehensweise: Verketten von zwei Sequenzen (LINQ to SQL)

Verwenden Sie den Concat<TSource>-Operator, um zwei Sequenzen zu verketten.

Der Concat<TSource>-Operator wurde für geordnete Multisets definiert, bei denen die Reihenfolgen des Empfängers und das Argument identisch sind.

Die Sortierung in SQL ist der letzte Schritt vor dem Erzeugen von Ergebnissen. Aus diesem Grund wird der Concat<TSource> durch Verwendung von UNION ALL-Operator implementiert, und die Reihenfolge der Argumente wird nicht beibehalten. Um zu gewährleisten, dass die Sortierung der Ergebnisse richtig ist, stellen Sie sicher, dass diese explizit sortiert werden.

Beispiel

In diesem Beispiel wird Concat<TSource> verwendet, um eine Sequenz der Telefon- und Faxnummern aller Customer (Kunden) und Employee (Mitarbeiter) zurückzugeben.

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
            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);
            }

In diesem Beispiel wird Concat<TSource> verwendet, um eine Sequenz aller Namens- und Telefonnummernzuordnungen für Customer (Kunden) und Employee (Mitarbeiter) zurückzugeben.

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
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);
}

Siehe auch

Referenz

Übersetzen von Standardabfrageoperatoren (LINQ to SQL)

Weitere Ressourcen

Beispiele für Abfragen (LINQ to SQL)