Share via


Select 子句 (Visual Basic)

定義查詢的結果。

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

組件

  • var1
    選擇項。 可用於參考資料行運算式之結果的別名 (Alias)。

  • fieldName1
    必要項。 在查詢結果中傳回的欄位名稱。

備註

您可以使用 Select 子句定義查詢傳回的結果。 這可讓您定義查詢建立之新匿名型別的成員,或鎖定查詢傳回之具名型別的成員。 查詢不需要 Select 子句。 如果未指定 Select 子句,查詢會依據目前範圍所識別之範圍變數的所有成員傳回型別。 如需詳細資訊,請參閱匿名型別 (Visual Basic)。 查詢建立具名型別時,會傳回型別 IEnumerable<T> 的結果,其中 T 是建立的型別。

Select 子句可以參考目前範圍中的任何變數。 這包含 From 子句 (或 From 子句) 中識別的範圍變數。 這也包含由 Aggregate、Let、Group By 或 Group Join 子句之別名所建立的新變數,或由查詢運算式中先前 Select 子句所決定的變數。 Select 子句也可以包含靜態值。 例如,下列程式碼範例會顯示查詢運算式,其中 Select 子句會將查詢結果定義為匿名型別並具有四個成員:ProductName、Price、Discount 及 DiscountedPrice。 ProductName 和 Price 成員值是取自 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 子句傳回兩個不同型別的集合。 第一個查詢會以字串傳回公司名稱集合。 第二個查詢會傳回以公司名稱和地址資訊填入 (Populate) 之 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 值,並填入新範圍變數的 CompanyName 和 CustomerID 資料行。 For Each 陳述式 (Statement) 會對每個傳回的物件執行迴圈,並顯示每個記錄的 CompanyName 和 CustomerID 資料行。

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

請參閱

參考

From 子句 (Visual Basic)

Where 子句 (Visual Basic)

Order By 子句 (Visual Basic)

概念

Visual Basic 中的 LINQ 簡介

匿名型別 (Visual Basic)

其他資源

查詢 (Visual Basic)