다음을 통해 공유


두 시퀀스 연결

연산자를 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는 모든 CustomerEmployee 이름과 전화번호 매핑의 시퀀스를 반환합니다.

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

참고하십시오