Klausul From (Visual Basic)

Menentukan satu atau lebih variabel rentang dan koleksi yang akan dikueri.

Sintaks

From element [ As type ] In collection [ _ ]  
  [, element2 [ As type2 ] In collection2 [, ... ] ]  

Generator

Term Definisi
element Harus diisi. Variabel rentang yang digunakan untuk mengulang seluruh elemen koleksi. Variabel rentang digunakan untuk merujuk ke setiap anggota collection saat kueri melakukan iterasi melalui collection. Harus tipe yang dapat disebutkan.
type Opsional. Jenis element. Jika tidak ada type yang ditentukan, jenis element disimpulkan dari collection.
collection Harus diisi. Mengacu pada koleksi yang akan dikueri. Harus tipe yang dapat disebutkan.

Keterangan

Klausa From digunakan untuk mengidentifikasi data sumber untuk kueri dan variabel yang digunakan untuk merujuk ke elemen dari kumpulan sumber. Variabel ini disebut variabel rentang. Klausa From diperlukan untuk kueri, kecuali ketika klausu Aggregatel digunakan untuk mengidentifikasi kueri yang hanya mengembalikan hasil agregat. Untuk informasi selengkapnya, lihat Klausul Agregat.

Anda dapat menentukan beberapa klausul From dalam kueri untuk mengidentifikasi beberapa koleksi yang akan digabungkan. Ketika beberapa koleksi ditentukan, koleksi tersebut diulang secara independen, atau Anda dapat menggabungkannya jika terkait. Anda dapat menggabungkan koleksi secara implisit dengan menggunakan klausa Select, atau secara eksplisit dengan menggunakan klausa Join atau Group Join. Sebagai alternatif, Anda dapat menentukan beberapa variabel rentang dan koleksi dalam satu klausa From, dengan setiap variabel rentang dan koleksi terkait dipisahkan dari yang lain dengan koma. Contoh kode berikut menunjukkan kedua opsi sintaks untuk klausa From.

' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2

' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
              From var2 In collection2

Klausa From menentukan cakupan kueri, yang mirip dengan cakupan perulangan For . Oleh karena itu, setiap variabel rentang element dalam cakupan kueri harus memiliki nama yang unik. Karena Anda dapat menentukan beberapa klausa From untuk kueri, klausa From berikutnya dapat merujuk ke variabel rentang dalam klausul From, atau klausul tersebut dapat merujuk ke variabel rentang dalam klausa From sebelumnya. Misalnya, contoh berikut menunjukkan klausul From berlapis di mana koleksi dalam klausul kedua didasarkan pada properti variabel rentang dalam klausa pertama.

Dim allOrders = From cust In GetCustomerList()
                From ord In cust.Orders
                Select ord

Setiap From klausa dapat diikuti oleh kombinasi klausa kueri tambahan untuk memperbaiki kueri. Anda bisa memperbaiki kueri dengan cara berikut:

  • Gabungkan beberapa koleksi secara implisit dengan menggunakan klausa From dan Select, atau secara eksplisit dengan menggunakan klausa Join atau Group Join.

  • Gunakan klausa Where untuk memfilter hasil kueri.

  • Urutkan hasilnya dengan menggunakan klausa Order By.

  • Kelompokkan hasil serupa bersama-sama dengan menggunakan klausul Group By.

  • Gunakan klausa Aggregate untuk mengidentifikasi fungsi agregat untuk mengevaluasi seluruh hasil kueri.

  • Gunakan klausa Let untuk memperkenalkan variabel iterasi yang nilainya ditentukan oleh ekspresi, bukannya koleksi.

  • Gunakan klausa Distinct untuk mengabaikan hasil kueri duplikat.

  • Identifikasi bagian hasil yang akan dikembalikan dengan menggunakan klausa Skip, Take, Skip While, dan Take While.

Contoh

Ekspresi kueri berikut menggunakan klausul From untuk mendeklarasikan variabel rentang cust untuk tiap objek Customer dalam koleksi customers. Klausul Where menggunakan variabel rentang untuk membatasi output kepada pelanggan dari wilayah yang ditentukan. Pengulangan For Each menampilkan nama perusahaan untuk setiap pelanggan dalam hasil kueri.

Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
                              ByVal region As String)

    Dim customersForRegion = From cust In customers
                             Where cust.Region = region

    For Each cust In customersForRegion
        Console.WriteLine(cust.CompanyName)
    Next
End Sub

Lihat juga