LINQ Sorgu İşlemlerinde Tür İlişkileri (C#)
Sorguları etkili bir şekilde yazmak için, bir bütün sorgu işlemindeki değişkenlerin türlerinin birbirleriyle ilişkisini anlamalısınız. Bu ilişkileri anladıysanız, belgede LINQ örneklerini ve kod örneklerini daha kolay anlarsınız. Ayrıca, değişkenler, kullanılarak örtük olarak yazıldığında ne olduğunu anlamış olursunuz var .
LINQ sorgu işlemleri veri kaynağında, sorgunun kendisinde ve sorgu yürütmesinde kesin olarak türdedir. Sorgudaki değişkenlerin türü, veri kaynağındaki öğelerin türüyle ve deyimdeki yineleme değişkeni türüyle uyumlu olmalıdır) foreach . Bu güçlü yazma, tür hatalarının Kullanıcı tarafından karşılaşmadan önce düzeltilebilecekleri derleme zamanında yakalanmasını güvence altına alır.
Bu tür ilişkilerini göstermek için, aşağıdaki örneklerin çoğu tüm değişkenler için açık yazma kullanır. Son örnek, varkullanarak örtük yazma kullandığınızda bile aynı ilkelerin nasıl uygulanacağını gösterir.
Kaynak verileri dönüştürmeksizin sorgular
aşağıdaki çizimde, verilerde dönüştürme gerçekleştirmeyen bir LINQ to Objects sorgu işlemi gösterilmektedir. Kaynak bir dize dizisi içerir ve sorgu çıktısı da dizeler dizisidir.

Veri kaynağının tür bağımsız değişkeni, Aralık değişkeninin türünü belirler.
Seçilen nesnenin türü, sorgu değişkeninin türünü belirler. İşte
namebir dize. Bu nedenle, sorgu değişkeni birIEnumerable<string>.Sorgu değişkeni, ifadesinde tekrarlanıyor
foreach. Sorgu değişkeni bir dizeler dizisi olduğundan, yineleme değişkeni de bir dizedir.
Kaynak verileri dönüştüren sorgular
Aşağıdaki çizimde, LINQ - SQL verilerde basit bir dönüşüm gerçekleştiren bir sorgu işlemi gösterilmektedir. Sorgu Customer , giriş olarak bir dizi nesne alır ve yalnızca Name sonuç içindeki özelliği seçer. NameBir dize olduğundan, sorgu çıktı olarak bir dize dizisi üretir.

Veri kaynağının tür bağımsız değişkeni, Aralık değişkeninin türünü belirler.
selectİfade,Nametüm nesne yerine özelliği döndürürCustomer.NameBir dize olduğundan, öğesinin tür bağımsız değişkenicustNameQuerystringdeğildirCustomer.custNameQueryBir dize dizisi olduğundan,foreachdöngünün yineleme değişkeni de bir olmalıdırstring.
Aşağıdaki çizimde biraz daha karmaşık bir dönüştürme gösterilmektedir. selectİfade, özgün nesnenin yalnızca iki üyesini yakalayan bir anonim tür döndürür Customer .

Veri kaynağının tür bağımsız değişkeni her zaman sorgudaki aralık değişkeninin türüdür.
selectİfade anonim bir tür oluşturduğundan, sorgu değişkeninin kullanılarak örtük olarak yazılması gerekirvar.Sorgu değişkeninin türü örtük olduğundan,
foreachdöngüdeki yineleme değişkeni de örtük olmalıdır.
Derleyicinin tür bilgilerini çıkarmalarına izin verme
Bir sorgu işlemindeki tür ilişkilerini anlamanız gerekse de, derleyicinin tüm işleri gerçekleştirmesini sağlamak için seçeneğiniz vardır. Var anahtar sözcüğü, bir sorgu işlemindeki herhangi bir yerel değişken için kullanılabilir. Aşağıdaki çizim, daha önce açıklanan örnek numarası 2 ' ye benzer. Ancak, derleyici sorgu işlemindeki her değişken için güçlü tür sağlar.

Hakkında daha fazla bilgi için var bkz. örtülü olarak yazılan yerel değişkenler.