Bagikan melalui


Gambaran Umum Operator Kueri Standar (Visual Basic)

Operator kueri standar adalah metode yang membentuk pola LINQ. Sebagian besar metode ini beroperasi pada urutan, di mana urutan tersebut adalah objek yang jenisnya mengimplementasikan antarmuka IEnumerable<T> atau antarmuka IQueryable<T>. Operator kueri standar menyediakan kemampuan kueri termasuk pemfilteran, proyeksi, agregasi, pengurutan, dan lainnya.

Ada dua set operator kueri standar LINQ, satu yang beroperasi pada objek jenis IEnumerable<T> dan yang lainnya yang beroperasi pada objek jenis IQueryable<T>. Metode yang membentuk setiap set masing-masing adalah anggota statis dari kelas Enumerable dan Queryable. Mereka didefinisikan sebagai metode ekstensi dari jenis yang mereka operasikan. Ini berarti bahwa mereka dapat dipanggil dengan menggunakan sintaks metode statis atau sintaks metode instans.

Selain itu, beberapa metode operator kueri standar beroperasi pada jenis selain yang didasarkan pada IEnumerable<T> atau IQueryable<T>. Jenis Enumerable mendefinisikan dua metode seperti itu yang keduanya beroperasi pada objek jenis IEnumerable. Metode ini, Cast<TResult>(IEnumerable) dan OfType<TResult>(IEnumerable), memungkinkan Anda mengaktifkan koleksi yang tidak berparameter, atau tidak umum untuk dikueri dalam pola LINQ. Mereka melakukan ini dengan membuat koleksi objek yang sangat berjenis. Kelas Queryable mendefinisikan dua metode serupa, Cast<TResult>(IQueryable) dan OfType<TResult>(IQueryable), yang beroperasi pada objek jenis Queryable.

Operator kueri standar berbeda dalam waktu eksekusinya, tergantung pada apakah mereka mengembalikan nilai singleton atau urutan nilai. Metode yang mengembalikan nilai singleton (misalnya, Average dan Sum) segera dijalankan. Metode yang mengembalikan urutan menunda eksekusi kueri dan mengembalikan objek yang dapat dijumlahkan.

Dalam kasus metode yang beroperasi pada koleksi dalam memori, yaitu metode yang memperluas IEnumerable<T>, objek enumerable yang dikembalikan menangkap argumen yang diteruskan ke metode. Saat objek itu disebutkan, logika operator kueri digunakan dan hasil kueri dikembalikan.

Sebaliknya, metode yang memperluas IQueryable<T> tidak menerapkan perilaku kueri apa pun, tetapi membangun pohon ekspresi yang mewakili kueri yang akan dilakukan. Pemrosesan kueri ditangani oleh objek sumber IQueryable<T>.

Panggilan ke metode kueri bisa dirantai bersama dalam satu kueri, yang memungkinkan kueri menjadi kompleks secara sewenang-wenang.

Contoh kode berikut ini menunjukkan bagaimana operator kueri standar dapat digunakan untuk mendapatkan informasi tentang urutan.

Dim sentence = "the quick brown fox jumps over the lazy dog"
' Split the string into individual words to create a collection.
Dim words = sentence.Split(" "c)

Dim query = From word In words
            Group word.ToUpper() By word.Length Into gr = Group
            Order By Length _
            Select Length, GroupedWords = gr

Dim output As New System.Text.StringBuilder
For Each obj In query
    output.AppendLine(String.Format("Words of length {0}:", obj.Length))
    For Each word As String In obj.GroupedWords
        output.AppendLine(word)
    Next
Next

'Display the output
MsgBox(output.ToString())

' This code example produces the following output:
'
' Words of length 3:
' THE
' FOX
' THE
' DOG
' Words of length 4:
' OVER
' LAZY
' Words of length 5:
' QUICK
' BROWN
' JUMPS

Sintaks Ekspresi Kueri

Beberapa operator kueri standar yang lebih sering digunakan memiliki sintaks kata kunci bahasa C# dan Visual Basic khusus yang memungkinkan mereka dipanggil sebagai bagian dari ekspresi kueri. Untuk informasi selengkapnya tentang operator kueri standar yang memiliki kata kunci khusus dan sintaks yang sesuai, lihat Sintaks Ekspresi Kueri untuk Operator Kueri Standar (Visual Basic).

Memperluas Operator Kueri Standar

Anda bisa menambah kumpulan operator kueri standar dengan membuat metode khusus domain yang sesuai untuk domain atau teknologi target Anda. Anda juga bisa mengganti operator kueri standar dengan implementasi Anda sendiri yang menyediakan layanan tambahan seperti evaluasi jarak jauh, terjemahan kueri, dan pengoptimalan. Lihat AsEnumerable sebagai contoh.

Tautan berikut membawa Anda ke topik yang memberikan informasi tambahan tentang berbagai operator kueri standar berdasarkan fungsionalitas.

Lihat juga