Aracılığıyla paylaş


LINQ Sorgu İşlemlerinde Tür İlişkileri (C#)

Etkili bir şekilde sorgu yazmak için bir sorgu işleminde değişken türlerinin arasındaki bağlantıyı anlamanız gerekir.Bu ilişkileri anladıysanız bu belgedeki LINQ örneklerini ve kod örneklerini daha kolay anlarsınız.Ayrıca, değişkenler var kullanılarak açık bir şekilde yazıldığında arka planda ne olduğunu anlayacaksınız.

LINQ sorgu işlemleri veri kaynağında, sorgunun kendisinde ve sorgu yürütmesinde yazılır.Sorgudaki değişkenlerin türü, veri kaynağındaki öğelerin türüyle foreach deyimindeki yineleme değişkeni türüyle uyumlu olmalıdır.Bu güçlü yazım, yazım hatalarının derleme zamanında yakalanabilmesini ve kullanıcılar karşılaşmadan düzeltilebilmesini sağlar.

Bu tür ilişkilerini göstermek için aşağıdaki örneklerin çoğunda tüm değişkenler için açık yazım kullanılmıştır.Son örnek, var kullanarak dolaylı yazma kullandığınızda bile nasıl aynı ilkelerin geçerli olduğunu gösterir.

Kaynak Verileri Dönüştürmeyen Sorgular

Aşağıdaki çizim, veri üzerinde hiçbir dönüştürme gerçekleştirmeyen Nesneler sorgu işlemine yönelik bir LINQ gösterir.Kaynak bir dize sırası içerir ve sorgu çıktısı da bir dize sırasıdır.

LINQ sorgusunda veri türlerinin ilişkisi

  1. Veri kaynağının tür bağımsız değişkeni aralık değişkeninin türünü belirler.

  2. Seçili nesne türü, sorgu değişkeni türünü belirler.Burada name bir dizedir.Bu nedenle sorgu değişkeni IEnumerable<string>.

  3. Sorgu değişkeni foreach ifadesinde yinelenir.Sorgu değişkeni bir dizeler sırası olduğundan, yineleme değişkeni de bir dizedir.

Kaynak Verileri Dönüştüren Sorgular

Aşağıdaki çizim veri üzerinde basit bir dönüştürme gerçekleştiren bir LINQ - SQL sorgu işlemini gösterir.Sorgu girdi olarak bir Customer nesneleri dizisi alır ve sonuçta yalnızca Name özelliğini seçer.Çünkü Name bir dizedir, sorgu çıktı olarak bir dize sırası üretir.

Veri türü dönüştüren bir sorgu

  1. Veri kaynağının tür bağımsız değişkeni aralık değişkeninin türünü belirler.

  2. select deyimi tam Customer nesnesi yerine Name özelliğini döndürür.Çünkü Name bir dizedir, custNameQuery öğesine ait tür bağımsız değişkeni; Customer değil, string öğesidir.

  3. Çünkü custNameQuery bir dizeler sırasıdır, foreach döngüsünün yineleme değişkeni de bir string olmalıdır.

Aşağıdaki çizim biraz daha karmaşık bir dönüştürmeyi gösterir.select deyimi özgün Customer nesnesinin yalnızca iki üyesini yakalayan, anonim bir tür döndürür.

Veri türü dönüştüren bir sorgu

  1. Veri kaynağının tür bağımsız değişkeni her zaman sorgudaki aralık değişkeninin türünü belirler.

  2. select deyimi anonim bir tür ürettiğinden, sorgu değişkeni var kullanılarak dolaylı olarak yazılmalıdır.

  3. Sorgu değişkeninin türü örtülü olduğundan, foreach döngüsündeki yineleme değişkeni de örtülü olmalıdır.

Derleyicinin tür bilgilerini çıkarmasına izin vererek

Sorgu işlemindeki tür ilişkilerini anlamanız gerekir, ancak derleyicinin tüm çalışmayı sizin yerinize gerçekleştirmesine de izin verebilirsiniz.var anahtar sözcüğü sorgu işlemindeki herhangi bir yerel değişken için kullanılabilir.Aşağıdaki çizim, daha önce bahsedilen 2 numaralı örneğe benzer.Ancak derleyici, sorgu işlemindeki her değişken için güçlü tür sağlar.

Örtülü yazma ile yazı akışı

var hakkında daha fazla bilgi için bkz. Örtülü Olarak Yazılan Yerel Değişkenler (C# Programlama Kılavuzu).

Ayrıca bkz.

Kavramlar

LINQ Sorgu İşlemlerinde Tür İlişkileri (Visual Basic)

Diğer Kaynaklar

C#'de LINQ'e Başlarken