Select 절(Visual Basic)

쿼리 결과를 정의합니다.

구문

Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]  

부분

var1
선택 사항. 열 식의 결과를 참조하는 데 사용할 수 있는 별칭입니다.

fieldName1
필수입니다. 쿼리 결과에 반환할 필드의 이름입니다.

설명

Select 절을 사용하여 쿼리에서 반환할 결과를 정의할 수 있습니다. 이를 통해 쿼리로 만들어진 새로운 무명 형식의 멤버를 정의하거나 쿼리에서 반환된 명명된 형식의 멤버를 대상으로 지정할 수 있습니다. 쿼리에는 Select 절이 필요하지 않습니다. Select 절이 지정되지 않은 경우 쿼리는 현재 범위에 대해 식별된 범위 변수의 모든 멤버를 기반으로 형식을 반환합니다. 자세한 내용은 무명 형식을 참조하세요. 쿼리가 명명된 형식을 만들면 T가 만들어진 형식인 IEnumerable<T> 형식의 결과를 반환합니다.

Select 절은 현재 범위의 모든 변수를 참조할 수 있습니다. 여기에는 From 절(또는 From 절)에서 식별된 범위 변수가 포함됩니다. 또한 Aggregate, Let, Group By 또는 Group Join 절에 의해 별칭으로 만들어진 새 변수나 쿼리 식의 이전 Select 절에서 가져온 변수도 포함됩니다. Select 절에는 정적 값도 포함될 수 있습니다. 예를 들어, 다음 코드 예에서는 Select 절이 쿼리 결과를 4개의 멤버(ProductName, Price, DiscountDiscountedPrice)가 있는 새로운 무명 형식으로 정의하는 쿼리 식을 보여 줍니다. ProductNamePrice 멤버 값은 From 절에 정의된 제품 범위 변수에서 가져옵니다. DiscountedPrice 멤버 값은 Let 절에서 계산됩니다. Discount 멤버는 정적 값입니다.

' 10% discount 
Dim discount_10 = 0.1
Dim priceList =
  From product In products
  Let DiscountedPrice = product.UnitPrice * (1 - discount_10)
  Select product.ProductName, Price = product.UnitPrice,
  Discount = discount_10, DiscountedPrice

Select 절은 후속 쿼리 절에 대한 새로운 범위 변수 집합을 도입하며 이전 범위 변수는 더 이상 범위에 포함되지 않습니다. 쿼리 식의 마지막 Select 절은 쿼리의 반환 값을 결정합니다. 예를 들어, 다음 쿼리는 총 주문량이 500건을 초과하는 모든 고객 주문에 대해 회사 이름과 주문 ID를 반환합니다. 첫 번째 Select 절은 Where 절과 두 번째 Select 절의 범위 변수를 식별합니다. 두 번째 Select 절은 쿼리에서 반환된 값을 새로운 무명 형식으로 식별합니다.

Dim customerList = From cust In customers, ord In cust.Orders
                   Select Name = cust.CompanyName,
                          Total = ord.Total, ord.OrderID
                   Where Total > 500
                   Select Name, OrderID

Select 절이 반환할 단일 항목을 식별하는 경우 쿼리 식은 해당 단일 항목 형식의 컬렉션을 반환합니다. Select 절이 반환할 여러 항목을 식별하는 경우 쿼리 식은 선택한 항목을 기반으로 새로운 무명 형식의 컬렉션을 반환합니다. 예를 들어, 다음 두 쿼리는 Select 절을 기반으로 서로 다른 두 가지 형식의 컬렉션을 반환합니다. 첫 번째 쿼리는 회사 이름 컬렉션을 문자열로 반환합니다. 두 번째 쿼리는 회사 이름과 주소 정보로 채워진 Customer 개체 컬렉션을 반환합니다.

Dim customerNames = From cust In customers
                    Select cust.CompanyName

Dim customerInfo As IEnumerable(Of Customer) =
  From cust In customers
  Select New Customer With {.CompanyName = cust.CompanyName,
                             .Address = cust.Address,
                             .City = cust.City,
                             .Region = cust.Region,
                             .Country = cust.Country}

예시

다음 쿼리 식은 From 절을 사용하여 customers 컬렉션에 대한 범위 변수 cust를 선언합니다. Select 절은 고객 이름과 ID 값을 선택하고 새 범위 변수의 CompanyNameCustomerID 열을 채웁니다. For Each 문은 반환된 각 개체를 반복하고 각 레코드에 대해 CompanyNameCustomerID 열을 표시합니다.

Sub SelectCustomerNameAndId(ByVal customers() As Customer)
    Dim nameIds = From cust In customers
                  Select cust.CompanyName, cust.CustomerID
    For Each nameId In nameIds
        Console.WriteLine(nameId.CompanyName & ": " & nameId.CustomerID)
    Next
End Sub

참고 항목