다음을 통해 공유


방법: 두 시퀀스 연결(LINQ to SQL)

업데이트: November 2007

Concat<TSource> 연산자를 사용하여 두 시퀀스를 연결합니다.

Concat<TSource> 연산자는 수신자와 인수의 순서가 동일하게 정렬된 다중 집합에 대해 정의되어 있습니다.

SQL의 정렬은 결과 생성 전에 수행되는 최종 단계입니다. 이러한 이유로 인해 Concat<TSource> 연산자는 UNION ALL을 사용하여 구현되며 해당 인수의 순서를 유지하지 않습니다. 결과에 정렬을 올바르게 하려면 결과를 명시적으로 정렬해야 합니다.

예제

이 예제에서는 Concat<TSource>을 사용하여 모든 Customer와 Employee에 대한 전화 번호 및 팩스 번호의 시퀀스를 반환합니다.

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

이 예제에서는 Concat<TSource>을 사용하여 모든 Customer와 Employee에 대한 이름 및 전화 번호 매핑의 시퀀스를 반환합니다.

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

참고 항목

참조

표준 쿼리 연산자 변환(LINQ to SQL)

기타 리소스

쿼리 예제(LINQ to SQL)