共用方式為


Select 子句 (Visual Basic)

定義查詢的結果。

語法

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

組件

var1
選擇性。 可用來參考數據行表達式結果的別名。

fieldName1
必須的。 查詢結果中要傳回的功能變數名稱。

備註

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

Select 句可以參考目前範圍中的任何變數。 這包括 子句中識別 From 的範圍變數(或 From 子句)。 它也包含查詢表達式中先前Select子句中、、 Group ByGroup Join 子句所建立之別名AggregateLet所建立的任何新變數。 子 Select 句也可以包含靜態值。 例如,下列程式代碼範例顯示查詢表達式,其中 子句會將 Select 查詢結果定義為具有四個成員的新匿名類型: ProductNamePriceDiscountDiscountedPriceProductNamePrice 成員值取自 子句中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個的客戶訂單,傳回公司名稱和訂單標識碼。 第一個Select子句會識別 子句和第二Select個子句的範圍變數Where。 第二 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 子句來宣告集合的範圍變數custcustomers。 子 Select 句會選取客戶名稱和標識碼值,並填入 CompanyName 新範圍變數的 和 CustomerID 數據行。 語句 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

另請參閱