Select 句 (Visual Basic)
クエリの結果を定義します。
構文
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
指定項目
var1
任意。 列式の結果を参照するために使用できる別名。
fieldName1
必須です。 クエリ結果に返されるフィールドの名前。
Remarks
Select
句を使用して、クエリから返される結果を定義できます。 これにより、クエリによって作成された新しい匿名型のメンバーを定義することも、クエリによって返される名前付きの型のメンバーを対象にすることもできます。 Select
句は、クエリには必要ありません。 Select
句が指定されていない場合、クエリは、現在のスコープで識別される範囲変数のすべてのメンバーに基づいて型を返します。 詳細については、「匿名型」を参照してください。 クエリで名前付きの型を作成すると、型 IEnumerable<T> の結果が返されます。ここで T
は作成された型です。
Select
句は、現在のスコープ内の任意の変数を参照できます。 これには、From
句 (または From
句) で識別される範囲変数が含まれます。 また、Aggregate
、Let
、Group By
、Group Join
の各句による別名で作成された新しい変数、またはクエリ式の前の Select
句からの変数も含まれます。 また、Select
句には静的な値を含めることもできます。 たとえば、次のコード例は、Select
句で ProductName
、Price
、Discount
、および DiscountedPrice
の 4 つのメンバーを持つ新しい匿名型としてクエリ結果を定義するクエリ式を示しています。 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
句と 2 番目の Select
句の範囲変数を識別します。 2 番目の 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
句が返される項目を 1 つ識別する場合、クエリ式はその 1 つの項目の型のコレクションを返します。 Select
句が返される項目を複数識別する場合、クエリ式は、選択した項目に基づいて、新しい匿名型のコレクションを返します。 たとえば、次の 2 つのクエリは、Select
句に基づいて 2 つの異なる型のコレクションを返します。 最初のクエリは、会社名のコレクションを文字列として返します。 2 番目のクエリは、会社名と住所情報が入力された 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
ステートメントは、返された各オブジェクトをループし、各レコードの 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
関連項目
.NET