Example of Section Blog layout (FAQ section)
Linq operatörleri ve kullanımı örnek PDF Yazdır e-Posta
Administrator tarafından yazıldı   
Pazartesi, 06 Eylül 2010 22:55

konu itibariyle öğrenmek amaçlı hazırlamış olduğum kaynak kodu paylaşıyorum

form üzerine 11 adet buton ve bir adet listbox koyarak sizde denemenizi yapabilirsiniz 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace linq_olan

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        class ogrenciler

        {

            publicint ogrenciid { get;set; }

            publicstring ogrenciadsoyad { get; set; }

            publicint ogrenciyas { get;set; }

            publicbool aktif { get;set; }

 

        }

        class sinif

        {

            publicstring sinifadi { get;set; }

            publicint ogrenciid { get;set; }

 

 

        }

        class okul

        {

            publicstring okuladi { get;set; }

            publicstring sinifadi { get;set; }

 

 

        }

        List<okul> okulum = newList<okul>() {

        new okul (){okuladi="al",sinifadi="1"},

        new okul(){okuladi="sml",sinifadi="2"},

        new okul(){okuladi="mel",sinifadi="3"}

        };

        List<sinif> sinifim = newList<sinif>() {

        new sinif(){ ogrenciid=1,sinifadi="1"},

        new sinif(){ ogrenciid=2,sinifadi="2"},

        new sinif(){ogrenciid =3,sinifadi="1"},

        new sinif(){ogrenciid=4,sinifadi="2"},

        new sinif(){ogrenciid=5,sinifadi="3"}

        };

 

        List<ogrenciler> liste = newList<ogrenciler>()

        {

            newogrenciler(){

           ogrenciid=1,ogrenciyas=12,ogrenciadsoyad="sade dede",aktif=true

            },

            new ogrenciler(){

               ogrenciid=2,ogrenciyas=13,ogrenciadsoyad="demir demirkan",aktif=true

            },

            newogrenciler(){

               ogrenciid=3,ogrenciyas=14,ogrenciadsoyad="kemal sers",aktif=false

            },

           new ogrenciler(){

               ogrenciid=4,ogrenciyas=12,ogrenciadsoyad="fevzi çalış",aktif=true

            },

            newogrenciler(){

           

           ogrenciid=5,ogrenciyas=13,ogrenciadsoyad="AHMET yusuf",aktif=true

            },

            newogrenciler(){ogrenciadsoyad="murat onur",ogrenciyas=12,aktif=true}

        };

        privatevoid Form1_Load(object sender, EventArgs e)

        {

          

        }

 

        privatevoid button1_Click(object sender, EventArgs e)

        {

            //////Lambda Expression (=>) kullanımı aktif olan oğrenci ve idsi bir olan gösterelim

            ////liste.Where(p=>p.Aktif…..) ifadesinde artık p dediğimiz eleman liste isimli listemizde

            ////yer alan her bir elemanı (Ogrenciler  sınıfı türünden elemanlar) temsil etmektedir.

            ////Dolayısıyla p. İfadesi ile Ogrenciler sınıfına ait özellikleri görebilmekteyiz.

            ////    Sorgudan dönen elemanları da ogrenciler isimli bir listeye aktarıyoruz. Linq sorguları

            ////IEnumerable<T> türünden bir liste döndürdüğü için elemanlarımızı okumak için foreach döngüsü

            ////    ile yazabiliriz.

            IEnumerable<ogrenciler> ogrenci = liste.Where(p => p.aktif && p.ogrenciid == 1);

            foreach (ogrenciler item in ogrenci)

            {

                listBox1.Items.Add(item.ogrenciid + " " + item.ogrenciadsoyad + " " + item.ogrenciyas);

 

            }

        }

 

        privatevoid button2_Click(object sender, EventArgs e)

        {

            //klasik sorgu teknikleriyle yapacak olursak

            var ogrenci = from k in liste

                          where k.aktif && k.ogrenciid == 4

                          select k;

 

            foreach (ogrenciler item in ogrenci)

            {

               listBox1.Items.Add(item.ogrenciid + " " + item.ogrenciadsoyad + " " + item.ogrenciyas);

 

            }

        }

 

        privatevoid button3_Click(object sender, EventArgs e)

        {

            //sıralamak için

            int[] dizi = { 21, 43, 43, 67, 665, 34, 33, 5678, 6, 34, 86, 34 };

            var bolum = (from sayi in dizi

                         orderby sayi

                         select sayi);

            foreach (var deger in bolum)

            {

                listBox1.Items.Add(deger);

            }

        }

 

        privatevoid button4_Click(object sender, EventArgs e)

        {

            string[] sehirler = { "samsun", "amasya", "ankara","yozgat", "sinop","diyarbakır", "istanbul" };

            string[] sehirler2 = { "kayseri", "malatya", "izmir","erzurum", "antalya" };

 

            //birleştirmek için

            var sonuc = sehirler2.Concat(sehirler);

            sonuc = (from sayi in sonuc

                     select sayi);

 

            //var ara = from sehir in sehirler

 

            //          join sehir2 in sehirler2 on sehir[0] equals sehir2[0]

 

            //          select sehir + " " + sehir2;

 

 

 

 

            foreach (var item in sonuc)

            {

                listBox1.Items.Add(item);

            }

        }

 

        privatevoid button5_Click(object sender, EventArgs e)

        {

            listBox1.Items.Clear();

        }

 

        privatevoid button6_Click(object sender, EventArgs e)

        {

            var goster = from k in liste

                         where k.ogrenciadsoyad[0] == 'A'

                         select k;

            //select k.ogrenciadsoyad; //foreach da item.ogrenciadsoyad yazmamak için

            foreach (var item in goster)

            {

               listBox1.Items.Add(item.ogrenciadsoyad);

            }

        }

 

        privatevoid button7_Click(object sender, EventArgs e)

        {

//             SelectMany Select ile seçim yapmaya çalıştığımız koleksiyon içerisinde yer alan

//            alanlardan biri gene koleksiyon yapısında ise bu içteki koleksiyonun elemanlarına

//            ulaşmak için iç içe iki foreach  döngüsü kullanmamız gerekir. (Bizim liste isimli

//            koleksiyonumuz göz önüne alınırsa bu koleksiyonumuzun alanlarından ogrenciadsoyad alanı gene

//            birden fazla elemana sahip bir string dizisi olarak düşünülebilir.)

 

            //Örneğin liste isimli koleksiyonumuzdan ogrenciyas’si 12 olan kişimizin ad ve soyadını görüntülemek

//            istersek aşağıdaki sorguyu kullanmamız gerekir.

            var goster = (from k in liste

                         where k.ogrenciyas == 12

                         select k.ogrenciadsoyad.Split(','));

            /////Lambda Expression (=>) kullanımı

            var sonuc=liste.Where(k=>k.ogrenciyas==13).Select(p=>p.ogrenciadsoyad.Split(','));

 

            foreach (var ogreniadsoyad in sonuc)

            {

                foreach (var item in ogreniadsoyad)

                {

                    listBox1.Items.Add(item);

                }

            }

        }

 

        privatevoid button8_Click(object sender, EventArgs e)

        {

//  Yukarıdaki sorgudan dönen koleksiyonun türü Select kullandığımızdan dolayı

//IEnumerable<IEnumerable<string>> türündendir. İç içe 2 adet IEnumerable tür

//     olduğundan dolayı en içteki elemanlara ulaşmak için iç içe 2 döngü

            //    kullanmamız gerekmektedir. Dıştaki döngü ogreniadsoyadın tümünü dizi

//     şeklinde elde ederken içteki döngü bu elemanları tek tek ekrana yazmaktadır.

 

//Yukarıda içi içe 2 foreach döngüsü kurarak yaptığımız işi SelectMany metodu tek başına

// yapabilmektedir. Bu metod geriye IEnumerable<string> türünden bir sonuç getirdiği için

//   tek bir döngü ile tüm elemanlar elde edilebilmektedir. Yani iç koleksiyonu da otomatik

//  olarak parçalayabilmektedir.

            var sonuc=liste.Where(p=>p.ogrenciyas==12).SelectMany(k=>k.ogrenciadsoyad.Split(','));

            foreach (var item in sonuc)

            {

                listBox1.Items.Add(item);

            }

        }

 

        privatevoid button9_Click(object sender, EventArgs e)

        {

  

 

//Join operatörü, Sql sorgularımızda kullandığımız join operatörüne çok benzemektedir.

//    Amaç iki ayrı koleksiyonu ID yapısındaki ortak kolonları ile bağlamaktır.

//Örneğin yukarıda tanımlamış olduğumuz koleksiyonlarımızdan sınıf ve öğrenciler

//isimli koleksiyonlarımızı ele aldığımızda “öğrenciler” isimli koleksiyonumuzda

   //ogrenciid tanımlayan bilgileri, “sınıf” isimli koleksiyon ise öğrencilerin

//  dahil olabilecekleri birimleri tanımlamaktadır. Biz her bir öğrencinin adı ve

//  sınıfının adını elde edebilmek için 2 adet sorgu çalıştırmalıyız. Çünkü

//     sınıf koleksiyonunda öğrencilerinin adı yer almaktadır

            //    . Her iki koleksiyonda da yer alan ve ogrenciid kolonu üzerinden ikisini birbirin

//bağlayan bir sorgu yazarsak istediğimiz sonucu elde edebiliriz.

//Aşağıdaki sorguda şunu demek istiyoruz. “Bana sınıf koleksiyonunu be ogrenciler

//  koleksiyonunu getir ama sınıf koleksiyonunda yer alan ögrenciid kolonunun

            // değeri birimler koleksiyonun ögrenciid kolonunun değerine eşit olanları seçerek getir.”

//  Gelen sonuç ta bir nesne koleksiyonuna atanmıştır. (select new ile Linq to Object yapılmıştır)

            var birlestir = from k in liste

                            from p in sinifim

                            where k.ogrenciid == p.ogrenciid

                            select new {

                            ogrenciadvesoyadi =k.ogrenciadsoyad,

                           sinifinadi=p.sinifadi

                           

                            };

            foreach (var item in birlestir)

            {

                listBox1.Items.Add("Sınıf adı=" + item.sinifinadi + " Oğrenci ad ve soyadı=" + item.ogrenciadvesoyadi);

            }

//Aynı sorguyu join operatörü kullanarak çok daha pratik bir şekilde gerçekleştirebiliriz

//Join operatörü aynen SQL’deki iner join gibi çalışır. Her iki kayıt yığınındaki eşleşen

// kayıtları ele alarak ogrenciler koleksiyonundan ogrenciid’ye karşılık gelen sinif’ini döndürür.

            var birlestir2=from k in liste

                           join p in sinifim on k.ogrenciid equals p.ogrenciid

                           select new

                           {

                              ogrenciadvesoyadi = k.ogrenciadsoyad,

                               sinifinadi = p.sinifadi

 

                           };

 

            foreach (var item in birlestir2)

            {

                listBox1.Items.Add("Sınıf adı="+item.sinifinadi + " Oğrenci ad ve soyadı=" + item.ogrenciadvesoyadi);

            }

 //Ekran çıktısında 3adet öğrenci listelenmiş  murat onur isimli ğrenci listelenmemiştir.

 // Çünkü bu öğrencinin  ogrenciidsi silinmiştir.  Join operatörü de Sql’deki iner join gibi çalıştığından oğrenciler

 // tablosundaki kayıtlardan yalnızca sınıf ile eşleşenleri getirecektir.

        }

 

        privatevoid button10_Click(object sender, EventArgs e)

        {

            ////GroupJoin kullanımı

            var sonuc = from k in liste

                        join p in sinifim on k.ogrenciid equals p.ogrenciid into t

                        from s in t.DefaultIfEmpty()

                        select new {

                            ogrenciadvesoyadi = k.ogrenciadsoyad,

                            ogrenciid = (s==null) ? 0 : s.ogrenciid

                            //Yukarıdaki ifade ile eğer ogrencinin dahil olduğu

                            //ogrenci idi boş geliyorsa o, aksi halde ogrenciidsini yazıyoruz

                        };

            foreach (var item in sonuc)

            {

                listBox1.Items.Add("oğrenci id=" + item.ogrenciid + " Oğrenci ad ve soyadı=" + item.ogrenciadvesoyadi);

            }

 

        }

 

        privatevoid button11_Click(object sender, EventArgs e)

        {

 

//            GroupBy

 

//Bu operatör Ienumerable türünden bir veri kümesi üzerinde belli bir kritere göre kayıtları

// gruplamaya yarar. Yapısı ve çalışma mantığı itibariyle Sql sorgularındaki GroupBy kullanımı

//  ile büyük benzerlikler göstermektedir. IEnumerable<IGrouping<K,T>> türünden bir veri kümesi döndürür.

//IGrouping<K,T> arayüzü IEnumerable<T> türünden miras almaktadır.

 

//public interface IGrouping<K, T> : IEnumerable<T>

//{

//       K Key { get; }

//}

 

//Bu arayüz Key isminde readonly bir özellik içermektedir.

//    Bu özellik yardımıyla gruplama sonucu elde edeceğimiz elemanlara ulaşabiliriz

 

 

 

            var sayilarim = new int[] { 2,65,89,59,5,9,654,7,5,66,52};

            var goster = from k in sayilarim

                         group k by k % 6 into k2

                         select new {

                         kalan =k2.Key,

                         adet=k2.Count()

                         };

            foreach (var item in goster)

            {

                listBox1.Items.Add( "6 ile bolündüğünde"  + item.kalan+" veren "+item.adet+" mevcut");

            }

        }

 

        privatevoid button12_Click(object sender, EventArgs e)

        {

            var goster = from k in okulum

                         join p in sinifim on k.sinifadi equals p.sinifadi

                         group p by p.sinifadiinto k

                         select new

                         {

                             sinifadi=k.Key,

                             adet=k.Count()

                         };

   //        okulum isimli koleksiyonumuz üzerinde sinifadi isimlerini de bu koleksiyona bağladık.

   //(join) Daha sonra sinifadina   göre verilerimizi gruplayarak her gruba düşen öğrenci sayısını belirlemiş oluyoruz.

            foreach (var item in goster)

            {

               listBox1.Items.Add(item.sinifadi + " nolu sınıfta" + "  " + item.adet + "  kişi mevcut");

            }

        }

    }

}

 

 

 

 

 

 

 

 

 
LİNQ KULLANIMIORNEK İKİ PDF Yazdır e-Posta
Administrator tarafından yazıldı   
Cumartesi, 31 Temmuz 2010 10:27

İKİNCİ ÖRNEK

//İSİMLER DİZİSİ OLUŞTURALIM
       

string[] isimler = { "ali","sadi", "kemal","mustafa" };

            //SORGUMUZU OLUŞTURALIM

            IEnumerable<string> sorgumuz= from s in isimler

                                          //İSMİN UZUNLUĞU 5 KAREKTERDEN KÜÇÜK İSE

                                        where s.Length < 5

                                        orderby s

                                        //İSİMLERİ BÜYÜK HARF GÖSTER

                                        select s.ToUpper();

 

//LİSTBOXA AKTAR

            foreach (string item in sorgumuz)

            {

               listBox1.Items.Add(item);

            }

birde toplama yapalım

        DataClasses1DataContext baglanti = new DataClasses1DataContext();

 

        var tumtablo = from kin baglanti.TBL_DENEMEs

                       //group k by k.SAYI into g

 

                       select k;

                       //select new {  toplamam = g.Sum(k =>k.YAS) };

        double toplamq =Convert.ToInt32( tumtablo.Sum<TBL_DENEME>(k => k.YAS));

        MessageBox.Show(toplamq.ToString());

       dataGridView1.DataSource = tumtablo;

 

 

LAST_UPDATED2
 
string parçalama işlemleri PDF Yazdır e-Posta
Administrator tarafından yazıldı   
Pazartesi, 26 Temmuz 2010 16:53

Farzedelim ki elinizde bir dizi mevcut bu dizideki verileri başka bir diziye parca parca eklemek istiyorsunuz.bunun için split fonksiyonu bizim için çok kullanışlı. yapacağımız işlem parçalamak istediğimiz alanlara ",","-",yda sadece boşluk koymak.

deneme amaçlı örnek kod yazarsak

string[] no = new string[5];
no[0] = &quot;ahmet yusuf karadeniz&quot;;
string[] no1 =no[0].Split(&quot; &quot;.ToCharArray());

listBoxControl2.Items.Add(no1[0]);
listBoxControl2.Items.Add(no1[1]);
listBoxControl2.Items.Add(no1[2]);

yada klavyeden texboxa girdiğimiz yazıları parcalayıp listboxa eklesin



private void button1_Click(object sender, EventArgs e)

{

string[] ek = textBox1.Text.Split(&quot; &quot;.ToCharArray());

for (int i = 0; i &lt; ek.Length; i++)

{

listBox1.Items.Add(ek[i]);

}

}

LAST_UPDATED2
 
linq kullanımı örnek 1 PDF Yazdır e-Posta
Administrator tarafından yazıldı   
Cuma, 16 Temmuz 2010 06:44

bu  örnekte klavyeden girilen sayilarin ,gene klavyeden girilen x sayısından küçük olanlarını yazdıran bir programolarak tasarladım.

 

 

Snippetre>

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace linq_ornekleri
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        List<int> numaralistesi=new List<int>();
        int[] numaralar;
        public void linq1()
        {
            
            //numaralistesi =new List<int>();
            //numaralistesi.Add(Convert.ToInt32(textBox2.Text));
            //int[] numaralar = new int[Convert.ToInt32(textBox3.Text)];
            //numaralistesi.CopyTo(numaralar,0);
          
            //int sayim=Convert.ToInt16(textBox1.Text);
            var numarfarki =
                from n in numaralar
                where n < (Convert.ToInt16(textBox1.Text))
                select n;
            MessageBox.Show(textBox2.Text.ToString()+" ten kücük sayilari gösteriyorum");
            foreach (var x in numarfarki)
            {
                listBox1.Items.Add(x.ToString());
                
            }
            for (int i = 0; i < numaralistesi.Count; i++)
            {
                listBox2.Items.Add(i);
            }
        
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            linq1();
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            int sayim = Convert.ToInt32(textBox2.Text);
            numaralistesi.Add(sayim);
            textBox2.Text = "";
            numaralar = new int[numaralistesi.Count];
           
            numaralistesi.CopyTo(numaralar, 0);

       
        }
    }
}
 

 
Dictionary örnek PDF Yazdır e-Posta
Administrator tarafından yazıldı   
PerÅŸembe, 15 Temmuz 2010 15:15

 

Snippet/>

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace sozluk_sinifi
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Dictionary<intstring> iller = new Dictionary<intstring>();

        private void Form1_Load(object sender, EventArgs e)
        {
            
            iller.Add(1, "adana");
            iller.Add(2, "adıyaman");
            iller.Add(7, "antalya");
            //eklemeyi değişik bir sekilde yapalım
            iller[55] = "samsun";



        }

        private void button1_Click(object sender, EventArgs e)
        {
            ICollection<int> plakalar = iller.Keys;
            ICollection<string> sehir_adi = iller.Values;

            foreach (int  plaka in plakalar)
            {
                listBox1.Items.Add(plaka);

            }
            foreach (string sehir in sehir_adi)
            {
                listBox2.Items.Add(sehir);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                iller.Add(Convert.ToInt32(textBox1.Text), textBox2.Text);
                textBox1.Clear();
                textBox2.Clear();
            }
            catch (Exception)
            {

                MessageBox.Show("DOĞRU DEĞERLER GİRİN");
            }
            
        }
    }
}
 

 
<< Başlat < Önceki 1 2 3 4 5 6 7 8 9 10 Sonraki > Son >>

Sayfa 1 > 12