LINQ { C# 3.0 ve Language Integrated Query }

Slides:



Advertisements
Benzer bir sunumlar
LINQ Language Integrated Query
Advertisements

C# - Metotlar.
Fonksiyonlar.
Değişkenler ve bellek Değişkenler
Ders İçeriği Bağlantılı Liste İki Yönlü Bağlantılı Liste
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
dataReader- DataAdapter
Miras Alma EM-406 Java.
İSİM UZAYLARI (Name Space)
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
MVP (Microsoft Most Valuable Professional) Nedir? Microsoft’un En Değerli Profesyonelleri (MVP’ler) bir veya daha fazla sayıdaki Microsoft ürünü konusunda.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
NESNEYE YÖNELİK PROGRAMLAMA
DİZİLER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
METODLAR.
C# Metot Overloading (Aşırı yükleme)
İSİM UZAYLARI (NAMESPACE)
NESNEYE DAYALI PROGRAMLAMA
.Net teknolojisi ve C# Yasin Gedik Dokuz Eylül Üniversitesi (4. Sınıf) Microsoft Danışman Öğrenci
Chapter 7: Using Methods. Metotları ve Kodlamayı Gizlemeyi Anlama Metot – Kapsüllenmiş ifadeler serisini gerçekleştiren bir görev – Kullanılan metodun.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
LINQ (Language Integrated Query)
Görsel C# Programlama Güz 2009 (6. Hafta).
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Java Sınıf ve Nesne Kavramı UML Gösterimi
Net Class Framework ’ ün en üst yapısına İsim Uzayı denir. İsim uzayları ; pascal programlama dilinde 1990 ve hatta öncesinden beri varolmuş, C’de yer.
FONKSİYONLAR.
Chapter 6: Using Arrays.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller Aslı Ergün.
ÇOK BİÇİMLİLİK POLYMORPHISM
İSİM UZAYLARI.
Önceki Dersi Hatırlama !!
Görsel Programlama II Ders 5 Öğr.Gör. Mustafa KARABULUT.
NESNEYE YÖNELİK PROGRAMLAMA
Kalıtım , Sınıf Asli Ergün.
Demet AYDIN METODLAR Demet AYDIN
SQL Komutları (2) Uzm. Murat YAZICI.
JAVA’DA DİZİLER Dr.Galip AYDIN.
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
Ders İçeriği Liste Soyut veri yapısı (ADT)
LINQtoSQL Silverligth Uygulamalarında LinqtoSql. LINQ (Language Integrated Query) özellikle dil içerisinde, Sql tarzı sorgular yazabilmemizi ve bunları.
Bölüm 5 Nesneler ve Metotlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
Görsel C# ile Windows Programlama
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
BTP206– Görsel Programlama II
BİLGİSAYAR programlama II
Sakarya Üniversitesi Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Prof. Dr. Ümit Kocabıçak Prof. Dr. Cemil Öz Doç. Dr. Ahmet Turan.
LINQ { C# 3.0 ve Language Integrated Query } MEHMET MECİT GÖK NO:
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
LINQ { C# 3.0 ve Language Integrated Query } Uğur UMUTLUOĞLU.
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
Nesneye Dayalı Programlama
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
Nesneye Dayalı Programlama 1
Sunum transkripti:

LINQ { C# 3.0 ve Language Integrated Query } Uğur UMUTLUOĞLU

Uğur UMUTLUOĞLU nedirtv?com ugur@nedirtv.com Site: E-posta: ugur@nedirtv.com Site: http://www.umutluoglu.com http://umutluoglu.blogspot.com

AJANDA LINQ’e Neden İhtiyaç Duyuldu LINQ’e Hazırlık: C# 3.0 ile Gelen Yenilikler Implicitly Typed Local Variables Object and Collection Initializers Anonymous Types Extension Methods Lambda Expressions Auto Implemented Property Partial Methods Query Expresions

AJANDA LINQ (Language Integrated Query) LINQ to Object LINQ to DataSet LINQ to SQL LINQ to XML C# 3.0 Yenilikleri LINQ’in Neresinde?

LINQ’e Neden İhtiyaç Duyuldu Nesne tabanlı bir ortamda nesneler hakkında bilgilere kolay ulaşabilmek, nesneler üzerinde arama, sıralama, gruplama gibi işlemleri kolaylaştırmak büyük bir ihtiyaç haline geldi Bu tip işlemleri, kullanılan dilden farklı ikinci bir bileşene(dile, yazılıma veya projeye eklenecek farklı katmanlara) ihtiyaç duymadan gerçekleştirebilmek oldukça önemliydi

LINQ’e Neden İhtiyaç Duyuldu Veritabanındaki tablolara .NET nesnesi olarak uygulama içerisinde sorgulamak XML dosyalarındaki verileri XPath ve Xquery kullanmadan, SQL ifadesi yazar gibi sorgulamak Koleksiyon ve dizi nesnelerini sorgulamak Ve bu sorgulamaları dil ile entegre şekilde oluşturabilmek

LINQ’e Hazırlık: C# 3.0 .NET Framework 3.5’teki en önemli yenilik LINQ’dir ve bu sürümde duyurulan C# 3.0’a katılan özelliklerin temel amacı LINQ’e destek vermeleridir Getirilen yenilikler LINQ için gerekli parçalardır ve LINQ projesinin daha tutarlı hale gelmesini sağlamıştır

Implicitly Typed Local Variables var anahtar kelimesiyle tanımlanan değişkenin tipinin bildirilmesi zorunluluğu ortadan kalkmıştır var bir değişken tipi değildir, değişken tanımlama yoludur. Tanımlanan değişkenin gerçek tipi derleme zamanında belirlenir IL kodlarında gerçek tip yer alacağı için performans kaybı söz konusu değildir

Implicitly Typed Local Variables Standart tanımlama yolu int sayi = 25; string sehir = "İstanbul"; Customer musteri = new Customer("Bülent Sözge"); List<double> liste = new List<double>(); var kelimesi kullanılarak yapılan tanımlamalar var yeniSayi = 25; var yeniSehir = "İstanbul"; var yeniMusteri = new Customer("Bülent Sözge"); var yeniListe = new List<double>();

Object and Collection Initializers Nesne örneği oluşturulurken alanlara ilk değerlerinin atılmasını sağlar. Böylece nesnenin parametreli yapıcı metotlarının yazılmasına gerek kalmaz Koleksiyonların tanımlanması esnasında dizilerde olduğu gibi elemanlarının atanmasını sağlar

Object and Collection Initializers C# 2.0 Yazımı Personel p = new Personel(8, "Burak Batur", "Denizli"); List<string> oyuncular = new List<string>(); oyuncular.Add("Rüştü"); oyuncular.Add("Servet"); C# 3.0 Yazımı Personel p = new Personel() { Id = 8, Isim = "Burak Batur", DogumYeri = "Denizli" }; List<string> oyuncular = new List<string>() { “Rüştü", “Servet" };

Anonymous Types Önceden hazırlanmamış bir sınıfın derleme zamanında yapılan tanımlamaya göre otomatik olarak oluşmasına ve kullanılmasına izin verilmektedir Oluşan yeni tip var ile tanımlanan değişkene atanır

Anonymous Types Daha önceden oyuncu ile ilgili bir sınıf yazılmamasına rağmen böyle bir sınıf varmış gibi nesne örneklenebilir Anonim tip object initializer yardımıyla oluşturulur ve sadece var kelimesi yardımıyla tanımlanabilir var oyuncu = new { FormaNo = 14, Isim = "Arda", Mevki = "Orta Saha" }; Console.WriteLine(oyuncu.Isim);

Extension Methods Varolan tipe yeni bir metot eklenebilir Örneğin kendi yazdığımız bir metodun String sınıfının üyesi olması ve projedeki tüm String değişkenler üzerinden bu metodun çağrılması sağlanabilir

Extension Methods static class StringExtensions { public static string TersCevir(this string s) char[] cDizi = s.ToCharArray(); Array.Reverse(cDizi); return new string(cDizi); }

Lambda Expressions Delegate nesnelerinin işaretleyeceği metotların daha kolay yazılabilmesini sağlar C# 2.0 ile getirilen anonymous method’ların daha sadeleştirilmiş halidir

Lambda Expressions delegate int ToplamaDelegate(int sayi1, int sayi2); static void Main(string[] args) { ToplamaDelegate toplaTemsilci11 = new ToplamaDelegate(Topla); } static int Topla(int x, int y) return x + y; C# 1.1’de temsilci nesnesinin metot işaretlemesi (Yeni bir metodun yazılması gerekir)

Lambda Expressions delegate int ToplamaDelegate(int sayi1, int sayi2); static void Main(string[] args) { ToplamaDelegate toplaTemsilci20 = delegate(int x, int y) return x + y; }; } C# 2.0’da anonymous method tanımlaması (İsimsiz bir metodun yazılması yeterlidir)

Lambda Expressions delegate int ToplamaDelegate(int sayi1, int sayi2); static void Main(string[] args) { ToplamaDelegate toplaTemsilci30 = (x, y) => x + y; } C# 3.0’da lambda expression tanımlaması (=> operatörünün işlemi işaretlemesi yeterlidir)

Auto Implemented Property Sınıf tasarımını kolaylaştırmak için field, get ve set bloğu tanımlamadan sade bir yazımla property’nin otomatik oluşmasını sağlar Yazılan property üyesinin içerisinde bulunacak get; set; ifadeleri otomatik olarak get ve set bloklarının içerisini doldurur. Gerekli olan field yine derleyici tarafından üretilir

Auto Implemented Property C# 2.0 C# 3.0 class Sinif_2_0 { private int _sayi; public int Sayi get { return _sayi; } set { _sayi = value; class Sinif_3_0 { public int Sayi get; set; }

Partial Methods Partial sınıfın bir parçasında metot tanımlaması, diğer parçasında metodun çalıştıracağı kodlar yer alabilir Sınıfı tasarlayan programcının metodu tanımlaması, programcının metodun içeriğini oluşturması için idealdir Sadece private erişim belirleyicisi alır ve geri dönüş değeri void olabilir

C# 3.0 ile Gelen Yenilikler

Query Expressions LINQ (Language Integrated Query - Dile entegre sorgu) T-SQL'de tablolara, Xquery’de Xml verilere yapılan sorguların benzeri artık uygulamadaki nesnelere de yapılabilir IEnumarable<T> arayüzünü uygulamış tüm nesneler LINQ ifadeleriyle sorgulanabilir IEnumarable<T> arayüzünü uygulamamış bazı nesneler Extension Method’lar sayesinde sorgulanabilir.

Query Expressions LINQ sorgularında Where, Select, OrderBy, GroupBy gibi kelimeler ve Count, Sum gibi gruplama fonksiyonları kullanılabilir Yazılan sorgu ifadeleri arka planda uygun metotlara çevrilir Anahtar kelimeler ve gruplama fonksiyonları SQL’deki anlamlarını taşırlar; fakat LINQ’deki söz dizimi biraz farklıdır

Query Expressions from sayi in sayiDizisi where sayi < 100 Sorguda kullanılacak değer from sayi in sayiDizisi where sayi < 100 select sayi Ele alınacak liste (dizi veya koleksiyon gibi) Seçilecek verileri belirleme (Şart bildirme, sıralama, gruplama) Sonuçta yer alacak değer int[] sayilar = new int[] { 3, 9, 6, 15, 4, 22 }; var ciftSayilar = from s in sayilar where s % 2 == 0 select s; foreach (int sayi in ciftSayilar) Console.WriteLine(sayi);

LINQ Mimarisi

LINQ to Objects IEnumarable<T> arayüzünü uygulamış tüm .NET tipleri LINQ ile sorgulanabilir Diziler (Array) Koleksiyonlar (Collections) Dizi veya Koleksiyon Üreten Tüm Metotlar Dosya ve Klasörler (System.IO vasıtasıyla) Dosya İçerikleri Tipler (Reflection vasıtasıyla)

LINQ to Data DLINQ : Database LINQ LINQ ile DataSet, DataTable nesneleri içerisinde saklanan veriler sorgulanabilir Veritabanındaki nesnelerin uygulama tarafındaki karşılıkları olan Entity sınıfları üzerinde LINQ sorguları yazılabilir Tablolar arasında ilişkilere izin verir ve ilişkisel LINQ sorguları yazılabilir Yapılan değişiklikler veritabanına yansıtılabilir

LINQ to XML XLINQ : XML LINQ XPath ve XQuery sorgulama teknolojilerine alternatif olarak daha kolay sorgulama yapısı sunar XElement nesnesi üzerinden elde edilen XML düğümleri standart LINQ ifadeleriyle sorgulanabilir

C# 3.0 Yenilikleri LINQ’in Neresinde? var buyukJpgDosyalar = from dosya in dosyaListe where dosya.Extension == ".jpg“ && dosya.Length > 100000 select new { DosyaAdi = dosya.Name, Boyut = dosya.Length + "B." }; Implicitly Typed Local Variables Anonymous Type Object Initializer

C# 3.0 Yenilikleri LINQ’in Neresinde? Kod derlendiğinde LINQ sorgusu arka planda uygun metotlara dönüştürülür Lambda Expressions Extension Methods

LINQ – Query Expressions

Mutlaka Göz Atın! 101 LINQ Örneği ADO.NET Entity Framework http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx ADO.NET Entity Framework Pro LINQ with C# 2008

Uğur UMUTLUOĞLU nedirtv?com Netron ugur.umutluoglu@netron.com.tr E-posta: ugur.umutluoglu@netron.com.tr ugur@nedirtv.com Site: http://www.umutluoglu.com http://umutluoglu.blogspot.com

Teşekkürler... Soru - Cevap