Select 子句 (Visual Basic)

定義查詢的結果。

語法

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

組件

var1
選擇性。 可用來參考資料行運算式結果的別名。

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

備註

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

Select 子句可以參考目前範圍中的任何變數。 這包括 From 子句 (或 From 子句) 中識別的範圍變數。 這也包括由 AggregateLetGroup ByGroup Join 子句建立具有別名的任何新變數,或查詢運算式中上一個 Select 子句的變數。 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 子句會識別 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 集合的範圍變數 custSelect 子句會選取客戶名稱和識別碼值,並填入新範圍變數的 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

另請參閱