Бөлісу құралы:


Объединение двух последовательностей

Concat Используйте оператор для объединения двух последовательностей.

Оператор Concat определяется для упорядоченных мультимножеств, где порядки получателя и аргумента одинаковы.

Упорядочивание в SQL — это последний шаг перед получением результатов. По этой причине Concat оператор реализуется с помощью UNION ALL и не сохраняет порядок его аргументов. Чтобы убедиться в правильности порядка в результатах, обязательно задайте явный порядок.

Пример 1

В этом примере используется Concat для возврата последовательности всех Customer номеров телефонов и 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

Пример 2

В этом примере используется Concat для возврата последовательности всех сопоставлений имен и номеров телефонов с помощью Customer и 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

См. также