연산자를 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