Standart sorgu Işleçlerine genel bakış (C#)
Standart sorgu IŞLEÇLERI LINQ deseninin bulunduğu yöntemlerdir. Bu yöntemlerin çoğu diziler üzerinde çalışır, burada bir sıra, türü arabirimini veya arabirimi uygulayan bir nesnedir IEnumerable<T> IQueryable<T> . Standart sorgu işleçleri filtreleme, yansıtma, toplama, sıralama ve daha fazlasını içeren sorgu özellikleri sağlar.
LINQ standart sorgu işleçlerinin iki kümesi vardır: türü nesneler üzerinde çalışan diğeri IEnumerable<T> , türündeki nesneler üzerinde çalışır IQueryable<T> . Her kümeyi oluşturan Yöntemler Enumerable sırasıyla ve sınıflarının statik üyeleridir Queryable . Bunlar üzerinde çalıştıkları türün Uzantı yöntemleri olarak tanımlanmıştır. Uzantı yöntemleri, statik yöntem sözdizimi veya örnek yöntemi sözdizimi kullanılarak çağrılabilir.
Ayrıca, birkaç standart sorgu işleci yöntemi, veya tabanlı olanlar dışındaki türler üzerinde çalışır IEnumerable<T> IQueryable<T> . EnumerableTürü, her ikisi de türündeki nesneler üzerinde çalışan iki yöntemi tanımlar IEnumerable . Bu yöntemler Cast<TResult>(IEnumerable) ve OfType<TResult>(IEnumerable) , parametreli olmayan veya genel olmayan BIR koleksiyonun LINQ düzeninde sorgulanmasını etkinleştirmenizi sağlar. Bunu, türü kesin belirlenmiş bir nesne koleksiyonu oluşturarak yapabilirler. QueryableSınıfı, Cast<TResult>(IQueryable) ve OfType<TResult>(IQueryable) türündeki nesneler üzerinde çalışan iki benzer yöntemi tanımlar IQueryable .
Standart sorgu işleçleri, tek bir değer veya bir dizi değer döndürmediğine bağlı olarak yürütmesinin zamanlamalarına göre farklılık gösterir. Tek bir değer döndüren Yöntemler (örneğin, Average ve Sum ) hemen yürütülür. Bir dizi döndüren yöntemler sorgu yürütmesini erteler ve Numaralandırılabilir bir nesne döndürüyor.
Bellek içi koleksiyonlar üzerinde çalışan yöntemler için, diğer bir deyişle, IEnumerable<T> döndürülen sıralanabilir nesne, metoduna geçirilen bağımsız değişkenleri yakalar. Bu nesne numaralandırıldıktan sonra, sorgu işlecinin mantığı işe alınır ve sorgu sonuçları döndürülür.
Buna karşılık, genişleyen Yöntemler IQueryable<T> herhangi bir sorgulama davranışı uygulamaz. Bunlar gerçekleştirilecek sorguyu temsil eden bir ifade ağacı oluşturur. Sorgu işleme, kaynak nesne tarafından işlenir IQueryable<T> .
Sorgu yöntemlerine yapılan çağrılar tek bir sorgu içinde birbirine zincirlenebilir ve bu da sorguların rastgele karmaşık olmasını sağlar.
Aşağıdaki kod örneği, bir dizi hakkında bilgi edinmek için standart sorgu işleçlerinin nasıl kullanılabileceğini gösterir.
string sentence = "the quick brown fox jumps over the lazy dog";
// Split the string into individual words to create a collection.
string[] words = sentence.Split(' ');
// Using query expression syntax.
var query = from word in words
group word.ToUpper() by word.Length into gr
orderby gr.Key
select new { Length = gr.Key, Words = gr };
// Using method-based query syntax.
var query2 = words.
GroupBy(w => w.Length, w => w.ToUpper()).
Select(g => new { Length = g.Key, Words = g }).
OrderBy(o => o.Length);
foreach (var obj in query)
{
Console.WriteLine("Words of length {0}:", obj.Length);
foreach (string word in obj.Words)
Console.WriteLine(word);
}
// 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 Ifadesi söz dizimi
daha sık kullanılan standart sorgu işleçlerinden bazılarının, bir sorgu ifadesinin parçası olarak çağrılmasına olanak sağlayan adanmış C# ve Visual Basic language anahtar sözcüğü vardır. Adanmış anahtar sözcüklere ve bunlara karşılık gelen sözdizimleri içeren standart sorgu işleçleri hakkında daha fazla bilgi için bkz. Standart sorgu işleçleri Için sorgu Ifadesi sözdizimi (C#).
Standart sorgu Işleçlerini genişletme
Hedef etki alanınız veya teknolojiniz için uygun olan alana özgü Yöntemler oluşturarak standart sorgu işleçleri kümesini daha da getirebilirsiniz. Standart sorgu işleçlerini, uzaktan değerlendirme, sorgu çevirisi ve iyileştirme gibi ek hizmetler sağlayan kendi uygulamalarınız ile de değiştirebilirsiniz. AsEnumerableBir örnek için bkz..
İlgili Bölümler
Aşağıdaki bağlantılar, işlevleri temel alan çeşitli standart sorgu işleçleri hakkında ek bilgiler sağlayan makalelere götürür.
Nicelik belirteci Işlemleri (C#)
Veri türlerini dönüştürme (C#)