Aracılığıyla paylaş


Standart sorgu işleçlerinin yürütme şekline göre sınıflandırılması (Visual Basic)

Standart sorgu işleci yöntemlerinin LINQ to Objects uygulamaları iki ana yoldan biriyle yürütülür: anında veya ertelenmiş. Ertelenmiş yürütme kullanan sorgu işleçleri ayrıca iki kategoriye ayrılabilir: akış ve akış dışı. Farklı sorgu işleçlerinin nasıl yürütüldüğünü biliyorsanız, belirli bir sorgudan elde ettiğiniz sonuçları anlamanıza yardımcı olabilir. Bu durum özellikle veri kaynağı değişiyorsa veya başka bir sorgunun üzerine sorgu oluşturuyorsanız geçerlidir. Bu konu başlığında standart sorgu işleçleri yürütme şekline göre sınıflandırır.

Yürütme Şekli

Hemen

Anında yürütme, veri kaynağının okunduğu ve işlemin sorgunun bildirildiği kod noktasında gerçekleştirildiği anlamına gelir. Tek, numaralandırılamayan bir sonuç döndüren tüm standart sorgu işleçleri hemen yürütülür.

Ertelenmiş

Ertelenmiş yürütme, işlemin sorgunun bildirildiği kod noktasında gerçekleştirilmediği anlamına gelir. İşlem yalnızca sorgu değişkeni numaralandırıldığında, örneğin bir For Each deyimi kullanılarak gerçekleştirilir. Bu, sorguyu yürütmenin sonuçlarının, sorgu tanımlandığında değil, sorgu yürütülürken veri kaynağının içeriğine bağlı olduğu anlamına gelir. Sorgu değişkeni birden çok kez numaralandırılırsa, sonuçlar her seferinde farklı olabilir. Dönüş türü IEnumerable<T> veya IOrderedEnumerable<TElement> olan neredeyse tüm standart sorgu operatörleri, ertelenmiş bir şekilde yürütülür.

Ertelenmiş yürütme kullanan sorgu işleçleri ayrıca akış veya akış dışı olarak sınıflandırılabilir.

Yayın

Akış işleçlerinin öğeleri vermeden önce tüm kaynak verileri okuması gerekmez. Yürütme sırasında, bir akış operatörü her kaynak eleman üzerinde okundukça işlemini gerçekleştirir ve uygunsa öğeyi üretir. Akış işleci, sonuç öğesi üretilene kadar kaynak öğeleri okumaya devam eder. Bu, bir sonuç öğesi üretmek için birden fazla kaynak öğenin okunabileceği anlamına gelir.

Akış Dışı

Akış dışı işleçlerin bir sonuç öğesi elde etmeden önce tüm kaynak verileri okuması gerekir. Sıralama veya gruplandırma gibi işlemler bu kategoriye girer. Yürütme sırasında akış dışı sorgu işleçleri tüm kaynak verileri okur, bir veri yapısına ekler, işlemi gerçekleştirir ve sonuçta elde edilen öğeleri verir.

Sınıflandırma Tablosu

Aşağıdaki tablo, her standart sorgu işleci yöntemini yürütme yöntemine göre sınıflandırır.

Uyarı

bir işleç iki sütunda işaretlenmişse, işleme iki giriş dizisi dahil edilir ve her dizi farklı değerlendirilir. Bu gibi durumlarda, her zaman parametre listesindeki ertelenmiş, akış biçiminde değerlendirilen ilk sıradır.

Standart Sorgu İşleci Dönüş Türü Anında Yürütme Ertelenen Yayın Yürütme Ertelenmiş Akış Dışı Yürütme
Aggregate TSource X
All Boolean X
Any Boolean X
AsEnumerable IEnumerable<T> X
Average Tek sayısal değer X
Cast IEnumerable<T> X
Concat IEnumerable<T> X
Contains Boolean X
Count Int32 X
DefaultIfEmpty IEnumerable<T> X
Distinct IEnumerable<T> X
ElementAt TSource X
ElementAtOrDefault TSource X
Empty IEnumerable<T> X
Except IEnumerable<T> X X
First TSource X
FirstOrDefault TSource X
GroupBy IEnumerable<T> X
GroupJoin IEnumerable<T> X X
Intersect IEnumerable<T> X X
Join IEnumerable<T> X X
Last TSource X
LastOrDefault TSource X
LongCount Int64 X
Max Tek sayısal değer, TSource veya TResult X
Min Tek sayısal değer, TSource veya TResult X
OfType IEnumerable<T> X
OrderBy IOrderedEnumerable<TElement> X
OrderByDescending IOrderedEnumerable<TElement> X
Range IEnumerable<T> X
Repeat IEnumerable<T> X
Reverse IEnumerable<T> X
Select IEnumerable<T> X
SelectMany IEnumerable<T> X
SequenceEqual Boolean X
Single TSource X
SingleOrDefault TSource X
Skip IEnumerable<T> X
SkipWhile IEnumerable<T> X
Sum Tek sayısal değer X
Take IEnumerable<T> X
TakeWhile IEnumerable<T> X
ThenBy IOrderedEnumerable<TElement> X
ThenByDescending IOrderedEnumerable<TElement> X
ToArray TSource dizisi X
ToDictionary Dictionary<TKey,TValue> X
ToList IList<T> X
ToLookup ILookup<TKey,TElement> X
Union IEnumerable<T> X
Where IEnumerable<T> X

Ayrıca bakınız