Linq c# Sorgu Örneklerini Hazır Olarak İndirme

hackpower77

Hectopat
Katılım
15 Şubat 2014
Mesajlar
200
Yer
Yalova
Daha fazla  
Meslek
Teknik Servis
Proje ödevimiz var arkadaşlar. Ekleme, silme, güncelleme hariç diğer sorguları bilen biri yapabilir mi veya yardımcı olabilir mi. Şimdiden teşekkürler.
 
Database öğrenmeyi dene. :D Böyle şeylere ihtiyacın kalmaz.
Arkadaş Linq ödevi için bilgi istiyor. Siz veritabanı öğren diyorsunuz. Her şey veritabanı ile yapılsa o zaman diğer dillere gerek kalmazdı.
Ayrıca şu anda Entity Framework'ün geldiği nokta SQL'e kafa tutacak noktada. Bence gelecekte SQL kodu yazmak hammallıktan başka bir şey olmayacak.
Linq C# dilinin bel kemiğidir. Language Integrated Query (LINQ) Türkçesi Dil ile Tümleşik Sorgu demek. Bir programdaki veriler sadece veritabanından gelen veriler olmaz. Programın içinde oluşan geçici veriler veya yerel veriler üzerinde de işlem yapmak isteriz. İşte tam bu noktada Linq devreye giriyor ve bu veriler üzerinde sorgu yapmamızı sağlıyor.
 
SQL query'si yazmak database öğrenmek değildir. Syntax yazmayı, 10 yaşında ki çocuk bile yapar. Veritabanı dediğin zaman, sadece sql yer almaz. Xml'de bir veri tabanı ve ya bilgilerini tutan bir class, veri tabanı olabilir(A frist Course in Database Systems Thrid Edition, J.D. Ulman, J. Widom, Pearson,2014 ). SQL ise bir, veri tabanı yönetim sistemidir. LinQ complier time düzenlenir. Buda verinizi 2 defa bellekte saklanmanızı sağlar. Big data ile uğraştığını düşünce kaç tane rows gelecek. Ayrıca linq.query'nin performanslı çalışması için en az BCNF uygulanmış tablolar olamalıdır. Ek olarak 2 stack üretir, biri security bakımından korunur iken diğeri veri ulaşmanız için public erişimlidir. Yani ben kötü niyetli kullanıcı isem, o verileri alabilirim daha da kötüsü engelleyebilirdim. Ek olarak, bir şirkette mülakata girdiğinizde size syntax sormaz, sorsa da dikkate alınmaz. Google telefon ile yaptığı mülakattaki sorusu : strlen fonksiyonu stringlerin sayısını nasıl hesaplıyor. Ben burada ödeve yardımcı olamak amacım değildi zaten vermiş ödevini. Burada bir kütüphaneye bağlı kalmamasıydı amaç.
 
Söylediklerinizden ben o anlamı çıkarttım. Çünkü arkadaş sorgulama öğrenmek istiyor. Veritabanı nasıl oluşturulur vs. değil. LINQ'in veritabanında karşılığı olsa olsa SQL olabilir. Çünkü SQL ile bir çok veritabanını sorgulayabilirsiniz. Diyelimki veritabanını bütünüyle anlatmak istediniz, XML ile ilgili bilgi edinmesi LINQ'e ihtiyacı kalmayacağı anlamına gelmez.

Bence siz LINQ bilginizi tekrar gözden geçirmelisiniz. Siz LINQ ile LINQ to SQL karıştırıyorsunuz. LINQ kullanmak için veritabanından veri çekmenize gerek yok. İstemci tarafında oluşturulan değişkenler üzerinde de bir sürü sorgu gerçekleştirebilirsiniz. Ve bu bilgiler istemci tarafından girildiği için herhangi bir güvenlik açığı yaratmaz. Ayrıca sunucu tarafında da LINQ ile sorgular gerçekleştirip istemciye alması gereken bilgiyi gönderebilirsiniz. Bu da güvenlik açığı oluşturmaz.

LinQ complier time düzenlenir. Buda verinizi 2 defa bellekte saklanmanızı sağlar. Big data ile uğraştığını düşününce kaç tane rows gelecek. Ayrıca linq.query'nin performanslı çalışması için en az BCNF uygulanmış tablolar olamalıdır. Ek olarak 2 stack üretir, biri security bakımından korunur iken diğeri veri ulaşmanız için public erişimlidir. Yani ben kötü niyetli kullanıcı isem, o verileri alabilirim daha da kötüsü engelleyebilirdim.

Haklısınız bu bilgiler LINQ to SQL için geçerli. Dediğim gibi siz LINQ ile LINQ to SQL karıştırdığınız için böyle bir cevap yazma gereği duymuşsunuz. Zaten LINQ to SQL bu sorunları çıkarttığı için Entity Framework'e geçiş yapıldı. Entity Framework'te sorgularınız "veritabanı.SaveChanges()" yaptıktan sonra SQL'e dönüştürülür. Ve tıpkı SQL sorgusu yazmışsınız gibi işlem görür. Bu nedenle veri çekmeden de sorgunuzu veritabanına gönderebilirsiniz.

Syntax yazmayı, 10 yaşında ki çocuk bile yapar.
SQL sorgularını hafife almışsınız. 10 yaşındaki insanın idrak etmekte zorlanacağı birçok kompleks sorgu mevcut.
 
Son düzenleme:
İlla sql mi yazmam gerekiyor ? π(sum(selling))[δbeer='bud'] böyle yazsam bu veri tabanı sorgusu olmaz mı ? Linq, amacı kod sayısını azaltmak, daha kolay bir programlama elde etmek diyebiliriz.
Kod:
public class vehicle
{
public string type;
public DateTime model;
public int numberofpassenger;
public Vehicle(string tipi, DateTime model, int yolcusayisi)
{
type=tipi ;
this.model = model;
numberofpassanger =yolcusayisi;
}
Public void show()
{
Consele.writeln(type,model,passanger)// fark etmez
}

}

Vehicle obj1 = new vehicle("tractor",new DateTime(1994, 8,8),1);
Vehicle obj2 = new vehicle("car",new DateTime(2004, 8,8),5);
obj1.Show();
obj2.show();




Kod:
public class Vehicle
{
public string type;
public DateTime model;
public int numberofpassenger;
public Vehicle(string tipi, DateTime model, int yolcusayisi)
{
type=tipi ;
this.model = model;
numberofpassanger =yolcusayisi;
}
Public void show()
{
Consele.writeln(type,model,passanger)// fark etmez
}

}

Vehicle obj1 = new Vehicle("tractor",new DateTime(1994, 8,8),1);
Vehicle obj2 = new vehicle("car",new DateTime(2004, 8,8),5);

var linq = from obj in Vehicle 

foreach (var o in linq)
{
consele.writeln(o);
}

Bu iki kod arasında fark varmı ? Evet, ikiside aynı sonucu basacak. linq iteration var. Biz yazılımcılar her zaman iteration kaçmak isteriz. Avantajları yok mu var. Dejavantaglarıda var. Bu orada sql syntaxı ingilizceden bile kolay. Ne kadar karışık ki bir sorgu yapmak.
 
Son düzenleme:
Yazdığınız kodun farkı yok. 2 değil de 2 milyon satır yazdırmak isteseydiniz, tek tek yazmak sizi yormaktan başka bir işe yaramayacaktı.
Linq sayesinde tek satırda bu sorguyu gerçekleştirebilirdiniz.
Kod:
vehicle.ForEach(x=> Console.WriteLine(x));

Yani veritabanı öğrenmek Lınq gereksinimini ortadan kaldırmaz. Kolaylık sağlıyorsa kullanılmalıdır.

Yazılımda döngüden kaçılmaz. Önemli olan en efektif döngüyü yazmaktır. En efektif döngü bile işlem yığını gerçekleştirdiği için belirli süre alacaktır. Sonuçta o işlem gerçekleştirilmek isteniyordur.
Bu noktada asenkron programlama devreye girer.
 
Son düzenleme:
Uyarı! Bu konu 11 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı