Merhaba arkadaşlar,
Geçen hafta beraber Entity Framework kullanarak temel veritabanı işlemleri nasıl yapıldığını incelemiştik. Bu hafta ise geçen haftalarda değindiğimiz konulardan olan LinQ teknolojisinden bahsedeceğim. Öncelikle LinQ'nin geçmişinden bahsetmek istiyorum.
LinQ (Language Integrated Query) Türkçe karşılığı ile "Dil ile Bütünleştirilmiş Sorgu"dur. .Net Framework 3.5 ve Visual Studio 2008 ile birlikte piyasaya çıkmış, bir çok alanda kolaylık ve yenilik sağlamıştır. Sağladığı kolaylıkların başında şüphesiz veriye kolay erişim imkanı ve SQL benzeri tek bir söz dizimi ile farklı tiplerdeki verilerin sorgulanmasını sağlamasıdır. Ayrıca C# ile sorgu yazmak, tip güvenli çalışma, ifadelerin otomatik olarak tamamlanması ve IntelliSense gibi özelliklerle geliştiricinin üretkenliğini artırmayı da sağlar.
LinQ'yi teknolojisine ait sınıflar ve methodları kullanmak istersek System.Linq kütüphanesini kullanmamız gerekir. Bu kütüphanenin tamamını buradan inceleyebiliriz.
LinQ teknolojisinin bir çok farklı kullanım alanları bulunmakta. Bunlardan bahsedecek olursak;
- LINQ to Objects: Bellek üzerindeki nesnelerden oluşan koleksiyonları sorgulamak için kullanılır.
- LINQ to SQL: SQL Server veritabanlarındaki tabloları sorgulamak için kullanılır.
- LINQ to DataSets :ADO.NET DataSet tiplerini sorgulamak için kullanılır.
- LINQ to XML: Xml verilerini sorgulamak için kullanılır.
- LINQ to Entity: ADO.NET Entity Framework tarafından oluşturulan varlıkları sorgulamak için kullanılır.
![]() |
Figür 1: LinQ Yapısı |
Yukarıdaki şekil LinQ yapısının şematik gösterimidir. Dilerseniz bir örnek üzerinden de yapısını ve kullanım şeklini anlatmaya çalışıyım.
Elimizde bir öğrenci listesi olsun ve bu liste öğrencilerin ismini ve bölümünü içersin;
{
new Ogrenci{ Adi = "Hürkan", Bolum = "Bil. Muh." },
new Ogrenci{ Adi = "Orhan", Bolum = "İşletme" },
new Ogrenci{ Adi = "Vedat", Bolum = "İstatistik"
new Ogrenci{ Adi = "Murtaza", Bolum = "Bil. Muh." }
};
Biz bu listeden bölümü Bil. Muh. olan öğrencileri çekmek istediğimizde for , while , swich-case gibi döngüleri kullanabiliriz. Fakat bu döngüler biraz uğraş gerektirdiği gibi aynı zamanda karmaşıkta olabilirler. Bu gibi durumlarda LinQ imdadımıza yetişiyor.
var birOgrenci = (from ogrenci in ogrenciler
where ogrenci.Adi == "Hürkan"
select ogrenci);
Yukarıdaki sorguda Hürkan isimli öğrenci tipinde tek bir değişken dönecektir. LinQ teknolojisi sayesinde istersek bir dizi veya bir liste tipinde de değişken döndürmek mümkün. Bunun için bölümü Bil. Muh. olan öğrencileri döndürelim.
var bilMuhOgrencileri =
(from ogrenci in ogrenciler
where ogrenci.Bolum == "Bil. Muh."select ogrenci).ToList();
Bu sorguda sonucunda ise bölümü Bil. Muh. olan bir liste elde etmiş olacağız.
Bu örneğimizi ilk gördüğümüzde sormamız gereken ilk soru bir List <> yapısında "where, select, from" gibi metotların nasıl kullandık? olmalıdır. Bu metotları kullanmamızı sağlayan System.Linq kütüphanesidir. Bu kütüphaneyi projemize import ettiğimiz zaman yukarıdaki linkte bulunan bütün LinQ metotları kullanabiliriz.
Şimdi gelelim ikinci sorumuz olan bu var tipi de nedir acaba? ya. Eğer biz var tipinde bir değişken tanımlarsak bunun anlamı ben değişkeni tanımlarken tipini belirtmek istemiyorum demektir. Konuyu örnek vererek açıklamak gerekirse;
var a= 10//Bu tanımlamada a değerine 10 atanırken tipide int olarak belirlenir.
Bugünkü yazımda LinQ mimarisinin geçmişinden sağladığı kolaylıklardan ve kullanımından bahsetmeye çalıştım. Umarım faydalı bir yazı olmuştur. Bir sonraki yazımda görüşmek üzere...
Referanslar
1- http://msdn.microsoft.com/en-us/library/vstudio/bb397926.aspx
2- http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
3- http://www.koddunyasi.net/makale_dokuman/sql/linq.pdf
Bu örneğimizi ilk gördüğümüzde sormamız gereken ilk soru bir List <> yapısında "where, select, from" gibi metotların nasıl kullandık? olmalıdır. Bu metotları kullanmamızı sağlayan System.Linq kütüphanesidir. Bu kütüphaneyi projemize import ettiğimiz zaman yukarıdaki linkte bulunan bütün LinQ metotları kullanabiliriz.
Şimdi gelelim ikinci sorumuz olan bu var tipi de nedir acaba? ya. Eğer biz var tipinde bir değişken tanımlarsak bunun anlamı ben değişkeni tanımlarken tipini belirtmek istemiyorum demektir. Konuyu örnek vererek açıklamak gerekirse;
var a= 10//Bu tanımlamada a değerine 10 atanırken tipide int olarak belirlenir.
Referanslar
1- http://msdn.microsoft.com/en-us/library/vstudio/bb397926.aspx
2- http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
3- http://www.koddunyasi.net/makale_dokuman/sql/linq.pdf
Hiç yorum yok:
Yorum Gönder