LINQ to Entities Sorgularında Standart Sorgu İşleçleri

Sorguda, veri kaynağından almak istediğiniz bilgileri belirtirsiniz. Sorgu ayrıca bu bilgilerin döndürülmeden önce nasıl sıralanacağını, gruplandırılacağını ve şekillendirileceğini belirtebilir. LINQ, sorguda kullanabileceğiniz bir dizi standart sorgu yöntemi sağlar. Bu yöntemlerin çoğu diziler üzerinde çalışır; bu bağlamda, bir dizi türü arabirimini veya IQueryable<T> arabirimini uygulayan IEnumerable<T> bir nesnedir. Standart sorgu işleçleri sorgu işlevselliği filtreleme, projeksiyon, toplama, sıralama, gruplandırma, sayfalama ve daha fazlasını içerir. Daha sık kullanılan standart sorgu işleçlerinden bazıları, sorgu ifadesi söz dizimi kullanılarak çağrılabilmeleri için ayrılmış anahtar sözcük söz dizimine sahiptir. Sorgu ifadesi, sorguyu ifade etmenin yöntem tabanlı eşdeğerinden farklı ve daha okunabilir bir yoludur. Sorgu ifadesi yan tümceleri, derleme zamanında sorgu yöntemlerine yapılan çağrılara çevrilir. Eşdeğer sorgu ifadesi yan tümcelerine sahip standart sorgu işleçlerinin listesi için bkz . Standart Sorgu İşleçlerine Genel Bakış.

LINQ to Entities sorgularında standart sorgu işleçlerinin tümü desteklenmez. Daha fazla bilgi için bkz . Desteklenen ve Desteklenmeyen LINQ Yöntemleri (LINQ to Entities). Bu konuda LINQ to Entities'a özgü standart sorgu işleçleri hakkında bilgi sağlanır. LINQ to Entities sorgularındaki bilinen sorunlar hakkında daha fazla bilgi için bkz . LINQ to Entities'ta Bilinen Sorunlar ve Önemli Noktalar.

Projeksiyon ve Filtreleme Yöntemleri

Projeksiyon , sonuç kümesinin öğelerini istenen forma dönüştürmeyi ifade eder. Örneğin, sonuç kümesindeki her nesneden ihtiyacınız olan özelliklerin bir alt kümesini yansıtabilir, bir özelliği yansıtabilir ve üzerinde matematiksel bir hesaplama gerçekleştirebilir veya sonuç kümesinden nesnenin tamamını yansıtabilirsiniz. Projeksiyon yöntemleri ve SelectManyşeklindedirSelect.

Filtreleme, sonuç kümesini yalnızca belirtilen koşulla eşleşen öğeleri içerecek şekilde kısıtlama işlemini ifade eder. Filtreleme yöntemi şeklindedir Where.

Projeksiyon ve filtreleme yöntemlerinin çoğu, konumsal bağımsız değişken kabul edenlerin dışında LINQ to Entities içinde desteklenir.

Birleştirme Yöntemleri

Birleştirme, birbiriyle gezinilebilir ilişkileri olmayan veri kaynaklarını hedefleyen sorgularda önemli bir işlemdir. İki veri kaynağının birleşimi, bir veri kaynağındaki nesnelerin ortak bir özniteliği veya özelliği paylaşan diğer veri kaynağındaki nesnelerle ilişkisidir. Birleştirme yöntemleri ve GroupJoinşeklindedirJoin.

Birleştirme yöntemlerinin çoğu aşırı yüklemesi desteklenir ve kullananlar dışında.IEqualityComparer<T> Bunun nedeni, karşılaştırıcının veri kaynağına çevrilememesidir.

Yöntemler Ayarlama

LINQ'deki küme işlemleri, sonuç kümelerini aynı veya başka bir koleksiyondaki (veya kümesindeki) eşdeğer öğelerin varlığına veya yokluğuna dayandıran sorgu işlemleridir. Küme yöntemleri , , , , , , DefaultIfEmpty, Distinct, EqualAll, IntersectExceptve UnionyöntemleridirAll. ContainsConcatAny

Küme yöntemlerinin çoğu LINQ to Entities içinde desteklenir, ancak LINQ to Objects ile karşılaştırıldığında davranışta bazı farklılıklar vardır. Ancak, karşılaştırıcı veri kaynağına çevrilemediğinden kullanan set yöntemleri IEqualityComparer<T> desteklenmez.

Sıralama Yöntemleri

Sıralama veya sıralama, bir veya daha fazla öznitelik temelinde bir sonuç kümesinin öğelerini sıralamayı ifade eder. Birden fazla sıralama ölçütü belirterek, bir grup içindeki bağları kesebilirsiniz.

Sıralama yöntemlerinin çoğu aşırı yüklemeleri, kullananlar IComparer<T>dışında desteklenir. Bunun nedeni, karşılaştırıcının veri kaynağına çevrilememesidir. Sıralama yöntemleri , , OrderByDescending, ThenByThenByDescendingve ReverseşeklindedirOrderBy.

Sorgu veri kaynağında yürütülürken sıralama davranışı CLR'de yürütülen sorgulardan farklı olabilir. Bunun nedeni, servis talebi sıralama, kanji sıralama ve null sıralama gibi sıralama seçeneklerinin veri kaynağında ayarlanabilmesidir. Veri kaynağına bağlı olarak, bu sıralama seçenekleri CLR'den farklı sonuçlar üretebilir.

Aynı anahtar seçiciyi birden fazla sıralama işleminde belirtirseniz, yinelenen bir sıralama oluşturulur. Bu geçerli değil ve bir özel durum oluşturulur.

Gruplandırma Yöntemleri

Gruplandırma, her gruptaki öğelerin ortak bir özniteliği paylaşması için verileri gruplara yerleştirmeyi ifade eder. Gruplandırma yöntemi şeklindedir GroupBy.

Gruplandırma yöntemlerinin çoğu aşırı yüklemeleri, kullananlar IEqualityComparer<T>dışında desteklenir. Bunun nedeni, karşılaştırıcının veri kaynağına çevrilememesidir.

Gruplandırma yöntemleri, anahtar seçici için ayrı bir alt sorgu kullanılarak veri kaynağına eşlenir. Anahtar seçici karşılaştırma alt sorgusu, değerleri karşılaştırmayla null ilgili sorunlar da dahil olmak üzere veri kaynağının semantiği kullanılarak yürütülür.

Toplama Yöntemleri

Toplama işlemi, bir değer koleksiyonundan tek bir değer hesaplar. Örneğin, bir aylık günlük sıcaklık değerlerinden ortalama günlük sıcaklığı hesaplamak toplama işlemidir. Toplama yöntemleri , , Average, Count, LongCount, Max, Minve SumyöntemleridirAggregate.

Toplama yöntemlerinin çoğu aşırı yüklemesi desteklenir. Null değerlerle ilgili davranışlar için toplama yöntemleri veri kaynağı semantiğini kullanır. Null değerler söz konusu olduğunda toplama yöntemlerinin davranışı, hangi arka uç veri kaynağının kullanıldığına bağlı olarak farklı olabilir. Veri kaynağının semantiğini kullanan toplama yöntemi davranışı da CLR yöntemlerinden beklenenden farklı olabilir. Örneğin, SQL Server'da yönteminin Sum varsayılan davranışı, özel durum atmak yerine null değerleri yoksaymaktır.

Toplama işleminden kaynaklanan, işlevden taşma gibi tüm özel durumlar, sorgu sonuçlarının Sum gerçekleştirilmesi sırasında veri kaynağı özel durumları veya Entity Framework özel durumları olarak oluşturulur.

veya Averagegibi Sum bir dizi üzerinde hesaplama içeren yöntemler için gerçek hesaplama sunucuda gerçekleştirilir. Sonuç olarak, sunucuda tür dönüştürmeleri ve duyarlık kaybı oluşabilir ve sonuçlar CLR semantiği kullanılarak beklenenden farklı olabilir.

Null/null olmayan değerler için toplama yöntemlerinin varsayılan davranışı aşağıdaki tabloda gösterilmiştir:

Metot Veri yok Tüm null değerler Bazı null değerler Null değer yok
Average Null döndürür. Null döndürür. Bir dizideki null olmayan değerlerin ortalamasını döndürür. Sayısal değerler dizisinin ortalamasını hesaplar.
Count 0 döndürür Dizideki null değerlerin sayısını döndürür. Dizideki null ve null olmayan değerlerin sayısını döndürür. Dizideki öğe sayısını döndürür.
Max Null döndürür. Null döndürür. Bir dizideki null olmayan en büyük değeri döndürür. Bir dizideki en büyük değeri döndürür.
Min Null döndürür. Null döndürür. Bir dizideki null olmayan en düşük değeri döndürür. Bir dizideki en düşük değeri döndürür.
Sum Null döndürür. Null döndürür. Bir dizideki null olmayan değerin toplamını döndürür. Sayısal değerler dizisinin toplamını hesaplar.

Tür Yöntemleri

Tür dönüştürme ve test ile ilgilenen iki LINQ yöntemi, Entity Framework bağlamında desteklenir. Bu, desteklenen tek türlerin uygun Entity Framework türüne eşleyen türler olduğu anlamına gelir. Bu türlerin listesi için bkz . Kavramsal Model Türleri (CSDL). Tür yöntemleri ve OfTypeşeklindedirConvert.

OfType varlık türleri için desteklenir. Convert kavramsal model temel türleri için desteklenir. C# is ve as yöntemleri de desteklenir.

Disk Belleği Yöntemleri

Sayfalama işlemleri bir diziden tek bir öğe veya birden çok öğe döndürür. Desteklenen disk belleği yöntemleri : First, FirstOrDefault, Single, SingleOrDefault, Skipve Take.

İşlevlerin veri kaynağıyla eşlenmemesi veya veri kaynağındaki kümelerin örtük sıralanmaması nedeniyle bir dizi disk belleği yöntemi desteklenmez. Varsayılan değer döndüren yöntemler, kavramsal model ilkel türleri ve null varsayılanları olan başvuru türleriyle sınırlıdır. Boş bir dizide yürütülen disk belleği yöntemleri null döndürür.

Ayrıca bkz.