Pages

Linq Sorgu Ve Söz Dizimi Kullanılması

 

Önce konsol uygulaması açıyoruz. ve aşağıdaki kodları yazmaya başlıyoruz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LinqSozDizimi
{
    class Program
    {
        static void Main(string[] args)
        {
            String[] isimler = new string[4] { "İbrahim", "Ali", "Veli", "Mahmutt" };
            var sorgu = from  kisi in isimler
                        where kisi.Length==7
                        orderby kisi
                        select kisi.ToUpper();

            foreach (string ad in sorgu)
            {
                Console.WriteLine(ad);

            }
            Console.Read();
        }
    }
}

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)

var sorgu = from  kisi in isimler
                        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.

imageekran Çı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.

image
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:

Adsız dedi ki...

tesekkurler.......makale super bence......