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

Lihat juga