Önce konsol uygulaması açıyoruz. ve aşağıdaki kodları yazmaya başlıyoruz.
using System; namespace LinqSozDizimi foreach (string ad in sorgu) } |
yukarıdaki kodumuzda önce dizimizi oluşturduk sonra var sorgu = kodu ile Anonim bir türde değişkenimizi oluşturduk(anonim tiplerde derleyici çalışma anında içindeki veriye göre değişkenin tipini belirler)
where kisi.Length==7
orderby kisi
select kisi.ToUpper();
bu kısımda ise verimizi çektik.Bu tarz Anonim tipler kullanılmış ifadeleri genellikle sorgudaki select operatörünün geri döndüreceği değerler her seferinde değişebiliyor ise kullanılır.(Çünkü ozaman sorgunun döndüreceği sonucu karşılayacak tür bulunmamaktadır.)
Burada klasik sql sorgularına benzer bir yapı olduğu dikkatinizi çekmiştir.
Eğer sonucun string tipinde döneceğini biliyor isek şu şekilde de yazabilirdik
IEnumerable<string >sorgu = from kisi in isimler
where kisi.Length==7
orderby kisi
select kisi.ToUpper();
Dikkat: sorgualanacak yapı IEnumerable<T> arabirimini desteklemesi gerekir.
burada eğer linq olmasaydı foreach döngüsü içinde if ile tüm kayıtların kriterimize uyup uymadığına bakacaktık.
ekran Çıktısı ikisindede bu şekilde olur.
Aşağıdaki gibi bir örneğe bakalım şimdi. Burda 2 öğesi olan isimsiz bir tür döndürüyoruz geriye.
var sorgu = from kisi in isimler
where kisi.Length == 7
orderby kisi
select new { boyut = kisi.Length, deger = kisi };
foreach (var ad in sorgu)
{
Console.WriteLine(ad);
}
dikkat etmemiz gereken kısımlar sorgunun anonim tipte olması ve select ifadesinin geriye tipleri farklı 2 değer döndürmesi ve foreach kısmında yine anonim tip oluşturmamızdır.
başka bir kullanımını görelim şimdi Meselabir class oluşturup dönen değerlerimizi bu sınıf öğelerine atayalım
public class benimclassim
{
public int boyut;
public string deger;
}
sınıfımızı oluşturduk şimdi ifademizde şu değişiklikleri yapalım.
var sorgu = from kisi in isimler
where kisi.Length == 7
orderby kisi
select new benimclassim
{
boyut=kisi.Length,
deger= kisi
};
1 yorum:
tesekkurler.......makale super bence......
Yorum Gönder