Klausul Select (Pilih) (Visual Basic)
Menentukan hasil kueri.
Sintaks
Select [ var1 = ] fieldName1 [, [ var2 = ] fieldName2 [...] ]
Generator
var1
Opsional. Alias yang dapat digunakan untuk mereferensikan hasil ekspresi kolom.
fieldName1
Harus diisi. Nama bidang yang akan dikembalikan dalam hasil kueri.
Keterangan
Anda bisa menggunakan klausul Select
untuk menentukan hasil yang akan dikembalikan dari kueri. Ini memungkinkan Anda menentukan anggota jenis anonim baru yang dibuat oleh kueri, atau untuk menargetkan anggota dari jenis bernama yang dikembalikan oleh kueri. Klausul Select
tidak diperlukan untuk kueri. Jika tidak ada klausul Select
yang ditentukan, kueri akan mengembalikan jenis berdasarkan semua anggota variabel rentang yang diidentifikasi untuk cakupan saat ini. Untuk informasi selengkapnya, lihat Jenis Anonim. Saat kueri membuat jenis bernama, kueri akan mengembalikan hasil jenis IEnumerable<T> di mana T
adalah jenis yang dibuat.
Klausul Select
dapat mereferensikan variabel apa pun dalam cakupan saat ini. Ini termasuk variabel rentang yang diidentifikasi dalam klausul From
(atau klausul From
). Ini juga mencakup variabel baru yang dibuat dengan alias oleh klausul Aggregate
, Let
, Group By
, atau Group Join
, atau variabel dari klausul Select
sebelumnya dalam ekspresi kueri. Klausul Select
juga dapat menyertakan nilai statis. Misalnya, contoh kode berikut menunjukkan ekspresi kueri di mana klausul Select
menentukan hasil kueri sebagai jenis anonim baru dengan empat anggota: ProductName
, Price
, Discount
, dan DiscountedPrice
. Nilai anggota ProductName
dan Price
diambil dari variabel rentang produk yang ditentukan dalam klausul From
. Nilai anggota DiscountedPrice
dihitung dalam klausul Let
. Anggota Discount
adalah nilai statis.
' 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
Klausul Select
memperkenalkan serangkaian variabel rentang baru untuk klausul kueri berikutnya, dan variabel rentang sebelumnya tidak lagi berada dalam cakupan. Klausul Select
terakhir dalam ekspresi kueri menentukan nilai pengembalian kueri. Misalnya, kueri berikut mengembalikan nama perusahaan dan ID pesanan untuk setiap pesanan pelanggan yang totalnya melebihi 500. Klausul pertama Select
mengidentifikasi variabel rentang untuk klausul Where
dan klausul Select
kedua. Klausul kedua Select
mengidentifikasi nilai yang dikembalikan oleh kueri sebagai jenis anonim baru.
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
Jika klausul Select
mengidentifikasi satu item untuk dikembalikan, ekspresi kueri mengembalikan kumpulan jenis item tunggal tersebut. Jika klausul Select
mengidentifikasi beberapa item untuk dikembalikan, ekspresi kueri mengembalikan kumpulan jenis anonim baru, berdasarkan item yang dipilih. Misalnya, dua kueri berikut mengembalikan koleksi dari dua jenis berbeda berdasarkan klausul Select
. Kueri pertama mengembalikan kumpulan nama perusahaan sebagai string. Kueri kedua mengembalikan kumpulan objek Customer
yang diisi dengan nama perusahaan dan informasi alamat.
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}
Contoh
Ekspresi kueri berikut menggunakan klausul From
untuk mendeklarasikan variabel cust
rentang untuk koleksi customers
. Klausul Select
memilih nama pelanggan dan nilai ID dan mengisi kolom CompanyName
dan CustomerID
dari variabel rentang baru. Pernyataan For Each
mengulang setiap objek yang dikembalikan dan menampilkan kolom CompanyName
dan CustomerID
untuk setiap rekaman.
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