Makale Geçmişi
20.06.16 21:14
LINQ Yöntem Sözdizimi (LINQ Method Syntax)
Bir çok LINQ sorgusu, LINQ'nun bildirimsel sorgu sözdizimi ile tanıtılır. Çoğu örneği bu şekilde görürsünüz. Ancak bu bildirimsel sözdizimlerinin tamamı derleme zamanında yöntem (fonksiyon) çağrılarına dönüştürülür. Örneğin; var basariliOgrenciler = from ogr in Ogrenciler where ogr.Yazililar[0] >= 55 orderby ogr.Soyadi select ogr; şeklindeki sorgu derleme işleminden sonra tekrar C# koduna çevrildiğinde aşağıdaki şekilde görülür. IOrderedEnumerable<Ogrenci> orderedEnumerable = Enumerable.OrderBy<Ogrenci, string>( Enumerable.Where<Ogrenci> ( (IEnumerable<Ogrenci>) Program.OgrencileriGetir(), (Func<Ogrenci, bool>) (ogr => ogr.Yazililar[0] >= 55) ), (Func<Ogrenci, string>) (ogr => ogr.Soyadi)); Yani LINQ bildirimsel söz dizimi bize bir kolaylık olarak sunulmuştur. Gerçekte hepsi birer yönteme karşılık gelir ve derleme işlemi sırasında karşılığı olan yöntem çağırılarına dönüştürülürler. Bu uzun ve karmaşık görünen yöntem çağrılarını daha kısa ve basit olarak bizim de kullanabilmemiz için .NET Framework Sınıf Kütüphanesinde System.Linq isim alanında IEnumerable<T> ve IEnumerable arayüzlerini uygulayan sınıflarda kullanılabilecek LINQ bildirimsel sözdizimine karşılık gelecek bir çok genişletme yöntemi (Extension Methods) tanımlanmıştır. Bu yöntemleri kullanarak bildirimsel programlama yöntemi ile ifade ettiğimiz sorguları yordamsal programlama ile de ifade edebiliriz. Örneğin üstteki sorgunun yordamsal programlama yani LINQ Yöntem Sözdizilimi (LINQ Method Syntax) ile yazılmış hali şöyledir; var basariliOgrenciler = Ogrenciler.Where(ogr => ogr.Yazililar[0] >= 55) .OrderBy(ogr => ogr.Soyadi); Burada görüldüğü gibi Lambda Ifadeleri (Lambda Expressions) denilen isimsiz fonksiyonlar kullanılmıştır ( ogr => ogr.Yazililar[0] >= 55 gibi). Kullanılan yöntem (Örneğin Where), parametre olarak aldığı isimsiz fonksiyondan dönen değere göre (Örneğin ogr => ogr.Yazililar[0] >= 55 ) işlem yapacaktır. Bu konu için Lambda Ifadeleri (Lambda Expressions) yazımızı inceleyin. Örneğimizde 2 tane LINQ Yöntem Sözdizilimi fonksiyonu kullanılmıştır. Birincisi listeden süzme yapabilmek için " Where " yöntemi, ikincisi ise sonuç listesini sıralamak için " OrderBy " yöntemi. " Where " yöntemi ile seçilen öğrenciler daha sonra " OrderBy " yöntemi ile sıralanmıştır. " Where ", seçilecek öğrencileri belirlemek için, " OrderBy " ise neye göre sıralanacağını belirlemek için birer Lambda İfadesi ile çağırılmışlardır. Kullandığımız bu yöntemlerin her ikisi de bir IEnumerable<T> (Örneğimizde IEnumerable<Ogrenci> ) döndürür. " Where " bir IEnumerable<Ogrenci> döndürdüğünden, ifadenin sonuna nokta koyarak IEnumerable<T> 'nin bir başka genişletme yöntemi olan " OrderBy " çağırılabilmektedir. Bu yöntem sayesinde LINQ Yöntem Sözdizilimi sorguları yanyana yöntemler şeklinde yazılabilir. Sonuç olarak LINQ sorguları hem bildirimsel, hem de yordamsal programlama kullanılarak ifade edilebilir. System.Linq isim alanında Linq Yöntem Sözdizilimini kullanabilmemiz için " Where " ve " OrderBy " gibi bir çok yöntem vardır. Bunların bir listesine şuradan ulaşabilirsiniz . Diğer LINQ Makaleleri: LINQ Örnekleri makalelerinde kullanılan verikaynağı LINQ (Language Integrated Query - Dile Entegre Edilmiş Sorgu) Nedir? LINQ Sağlayıcıları (LINQ Providers) LINQ Yöntem Sözdizimi (LINQ Method Syntax) (Bu makale) LINQ - Temel İşlemler - Bir Veri Kaynağı Bildirme ve Seçme (From ve Select) LINQ - Temel İşlemler - Süzme (Filtering) LINQ - Temel İşlemler - Sıralama (Ordering) LINQ - Temel İşlemler - Gruplama (Grouping) LINQ - Temel İşlemler - Birleştirme (Joining) LINQ - Deferred Execution - Ertelenmiş Çalıştırma LINQ - Immediate Execution - Anında Çalıştırma LINQ - Query Reuse - Sorgunun Yeniden Kullanımı LINQ - Kısıtlama (Restriction) Kullanım Örnekleri LINQ - Yansıtma (Projection) - Select Kullanım Örnekleri LINQ - Yansıtma (Projection) - SelectMany Kullanım Örnekleri LINQ - Bölümleme (Partitioning) Örnekleri LINQ - Sıralama (Ordering) Örnekleri LINQ - Gruplama (Grouping) Örnekleri LINQ - Küme (Set) Örnekleri LINQ - Dönüşüm (Conversion) Örnekleri LINQ - Eleman (Element) Seçimi Örnekleri LINQ - Oluşturma (Generation) Örnekleri LINQ - Miktar Belirleyiciler (Quantifiers) Örnekleri LINQ - Yığın (Aggregate) Örnekleri LINQ - Birleştirme (Join) İşlemleri LINQ - Özel Dizilim (Custom Sequence) Örneği LINQ - Concat ve SequenceEqual İle Örnekle r
Ekleyen: canora
Değiştiren: canora
09.04.16 20:00
LINQ Yöntem Sözdizimi (LINQ Method Syntax)
Bir çok LINQ sorgusu, LINQ'nun bildirimsel sorgu sözdizimi ile tanıtılır. Çoğu örneği bu şekilde görürsünüz. Ancak bu bildirimsel sözdizimlerinin tamamı derleme zamanında yöntem (fonksiyon) çağrılarına dönüştürülür. Örneğin; var basariliOgrenciler = from ogr in Ogrenciler where ogr.Yazililar[0] >= 55 orderby ogr.Soyadi select ogr; şeklindeki sorgu derleme işleminden sonra tekrar C# koduna çevrildiğinde aşağıdaki şekilde görülür. IOrderedEnumerable<Ogrenci> orderedEnumerable = Enumerable.OrderBy<Ogrenci, string>( Enumerable.Where<Ogrenci> ( (IEnumerable<Ogrenci>) Program.OgrencileriGetir(), (Func<Ogrenci, bool>) (ogr => ogr.Yazililar[0] >= 55) ), (Func<Ogrenci, string>) (ogr => ogr.Soyadi)); Yani LINQ bildirimsel söz dizimi bize bir kolaylık olarak sunulmuştur. Gerçekte hepsi birer yönteme karşılık gelir ve derleme işlemi sırasında karşılığı olan yöntem çağırılarına dönüştürülürler. Bu uzun ve karmaşık görünen yöntem çağrılarını daha kısa ve basit olarak bizim de kullanabilmemiz için .NET Framework Sınıf Kütüphanesinde System.Linq isim alanında IEnumerable<T> ve IEnumerable arayüzlerini uygulayan sınıflarda kullanılabilecek LINQ bildirimsel sözdizimine karşılık gelecek bir çok genişletme yöntemi (Extension Methods) tanımlanmıştır. Bu yöntemleri kullanarak bildirimsel programlama yöntemi ile ifade ettiğimiz sorguları yordamsal programlama ile de ifade edebiliriz. Örneğin üstteki sorgunun yordamsal programlama yani LINQ Yöntem Sözdizilimi (LINQ Method Syntax) ile yazılmış hali şöyledir; var basariliOgrenciler = Ogrenciler.Where(ogr => ogr.Yazililar[0] >= 55) .OrderBy(ogr => ogr.Soyadi); Burada görüldüğü gibi Lambda Ifadeleri (Lambda Expressions) denilen isimsiz fonksiyonlar kullanılmıştır ( ogr => ogr.Yazililar[0] >= 55 gibi). Kullanılan yöntem (Örneğin Where), parametre olarak aldığı isimsiz fonksiyondan dönen değere göre (Örneğin ogr => ogr.Yazililar[0] >= 55 ) işlem yapacaktır. Bu konu için Lambda Ifadeleri (Lambda Expressions) yazımızı inceleyin. Örneğimizde 2 tane LINQ Yöntem Sözdizilimi fonksiyonu kullanılmıştır. Birincisi listeden süzme yapabilmek için " Where " yöntemi, ikincisi ise sonuç listesini sıralamak için " OrderBy " yöntemi. " Where " yöntemi ile seçilen öğrenciler daha sonra " OrderBy " yöntemi ile sıralanmıştır. " Where ", seçilecek öğrencileri belirlemek için, " OrderBy " ise neye göre sıralanacağını belirlemek için birer Lambda İfadesi ile çağırılmışlardır. Kullandığımız bu yöntemlerin her ikisi de bir IEnumerable<T> (Örneğimizde IEnumerable<Ogrenci> ) döndürür. " Where " bir IEnumerable<Ogrenci> döndürdüğünden, ifadenin sonuna nokta koyarak IEnumerable<T> 'nin bir başka genişletme yöntemi olan " OrderBy " çağırılabilmektedir. Bu yöntem sayesinde LINQ Yöntem Sözdizilimi sorguları yanyana yöntemler şeklinde yazılabilir. Sonuç olarak LINQ sorguları hem bildirimsel, hem de yordamsal programlama kullanılarak ifade edilebilir. System.Linq isim alanında Linq Yöntem Sözdizilimini kullanabilmemiz için " Where " ve " OrderBy " gibi bir çok yöntem vardır. Bunların bir listesine şuradan ulaşabilirsiniz .
Ekleyen: canora
En fazla 3 eski durum gösterilir.