Aracılığıyla paylaş


Standart Sorgu İşleçlerine Genel Bakış (Visual Basic)

Standart sorgu işleçleri LINQ desenini oluşturan yöntemlerdir. Bu yöntemlerin çoğu diziler üzerinde çalışır; burada bir dizi türü arabirimini veya IQueryable<T> arabirimini uygulayan IEnumerable<T> bir nesnedir. Standart sorgu işleçleri filtreleme, projeksiyon, toplama, sıralama ve daha fazlası gibi sorgu özellikleri sağlar.

Biri türündeki nesneler üzerinde, diğeri türündeki IEnumerable<T> nesneler üzerinde çalışan IQueryable<T>iki LINQ standart sorgu işleci kümesi vardır. Her kümeyi oluşturan yöntemler sırasıyla ve Queryable sınıflarının Enumerable statik üyeleridir. Üzerinde çalıştıkları türün uzantı yöntemleri olarak tanımlanırlar. Bu, statik yöntem söz dizimi veya örnek yöntemi söz dizimi kullanılarak çağrılabileceği anlamına gelir.

Buna ek olarak, birkaç standart sorgu işleci yöntemi veya IQueryable<T>tabanlı IEnumerable<T> olanlar dışında türler üzerinde çalışır. türü, Enumerable türündeki IEnumerablenesneler üzerinde çalışan bu tür iki yöntemi tanımlar. Bu yöntemler Cast<TResult>(IEnumerable) ve OfType<TResult>(IEnumerable), LINQ deseninde sorgulanacak parametrelenmemiş veya genel olmayan bir koleksiyonu etkinleştirmenize olanak tanır. Bunu, kesin olarak belirlenmiş bir nesne koleksiyonu oluşturarak yapar. Queryable sınıfı, Cast<TResult>(IQueryable) türündeki Queryablenesneler üzerinde çalışan ve OfType<TResult>(IQueryable)benzeri iki yöntem tanımlar.

Standart sorgu işleçleri, tek bir değer mi yoksa bir değer dizisi mi döndürdiklerine bağlı olarak yürütme zamanlamalarında farklılık gösterir. Tek değer döndüren yöntemler (örneğin, Average ve Sum) hemen yürütülür. Sıra döndüren yöntemler sorgu yürütmesini erteler ve numaralandırılabilir bir nesne döndürür.

Bellek içi koleksiyonlar üzerinde çalışan yöntemler, yani genişleten IEnumerable<T>yöntemler söz konusu olduğunda, döndürülen numaralandırılabilir nesne yöntemine geçirilen bağımsız değişkenleri yakalar. Bu nesne numaralandırıldığında, sorgu işlecinin mantığı kullanılır ve sorgu sonuçları döndürülür.

Buna karşılık, genişleten IQueryable<T> yöntemler herhangi bir sorgulama davranışı uygulamaz, ancak gerçekleştirilecek sorguyu temsil eden bir ifade ağacı oluşturur. Sorgu işleme, kaynak IQueryable<T> nesne tarafından işlenir.

Sorgu yöntemlerine yapılan çağrılar tek bir sorguda zincirlenebilir ve bu da sorguların rastgele karmaşık hale gelmesini sağlar.

Aşağıdaki kod örneği, standart sorgu işleçlerinin bir dizi hakkında bilgi almak için nasıl kullanılabileceğini gösterir.

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

Sorgu İfadesi Söz Dizimi

Daha sık kullanılan standart sorgu işleçlerinden bazıları, bir sorgu ifadesinin parçası olarak çağrılmalarını sağlayan ayrılmış C# ve Visual Basic dil anahtar sözcük söz dizimine sahiptir. Ayrılmış anahtar sözcükleri ve buna karşılık gelen söz dizimleri olan standart sorgu işleçleri hakkında daha fazla bilgi için bkz . Standart Sorgu İşleçleri için Sorgu İfadesi Söz Dizimi (Visual Basic).

Standart Sorgu İşleçlerini Genişletme

Hedef etki alanınıza veya teknolojinize uygun etki alanına özgü yöntemler oluşturarak standart sorgu işleçleri kümesini artırabilirsiniz. Ayrıca standart sorgu işleçlerini, uzaktan değerlendirme, sorgu çevirisi ve iyileştirme gibi ek hizmetler sağlayan kendi uygulamalarınızla değiştirebilirsiniz. Örnek için bkz AsEnumerable .

Aşağıdaki bağlantılar, işlevlere bağlı olarak çeşitli standart sorgu işleçleri hakkında ek bilgi sağlayan konulara götürür.

Ayrıca bkz.