// Buraya gelen filtre sonuçlarının depolandığı sınıf yapısındaki isimler listeye yazılıyor.
 private void FiltrelemeSonucGoster(FiltreUygulanmislar filtreUygulanmislar)
 {
     if (filtreUygulanmislar != null)
     {
         if (filtreUygulanmislar.ad != null)
         {
             listBox1.Items.Add(filtreUygulanmislar.ad);
             FiltrelemeSonucGoster(filtreUygulanmislar.sag);
         }
     }
 }
 // İlk uygulanan filtreyse kendisi, bu fonksiyon çalışıyor. Üsttekinin bir kopyası diyebiliriz.
 private void IngilizceBilenlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmislar) // gelen filtreuygulanmislar1
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.ydil.ToLower().Contains("en"))
             {
                 filtreUygulanmislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmislar.sag = new FiltreUygulanmislar();
                 IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmislar.sag);
             }
             else
             {
                 IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmislar);
             }
         }
     }
 }
 // Kendisi ilk uygulanan filtre ise çalışan fonksiyon.
 private void IsDeneyimiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar) //gelen filtreuygulanmislar1
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi / 12 >= Convert.ToInt32(mindeneyimTxt.Text))
             {
                 filtreUygulanmamislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag = new FiltreUygulanmislar();
                 IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag);
             }
             else
             {
                 IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar);
             }
         }
     }
 }
 // Kendisi ilk uygulanan filtre ise çalışan fonksiyon.
 private void BelirliYasAltiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar)
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (DateTime.Now.Year - tumBasvuranlar.dt.Year < Convert.ToInt32(belirliyasaltiTxt.Text))
             {
                 filtreUygulanmamislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag = new FiltreUygulanmislar();
                 BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag);
             }
             else
             {
                 BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar);
             }
         }
     }
 }
 // Kendisi ilk uygulanan filtre ise çalışan fonksiyon.
 private void DeneyimsizlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar) //gelen filtreuygulanmislar1
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi == 0)
             {
                 filtreUygulanmamislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag = new FiltreUygulanmislar();
                 DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag);
             }
             else
             {
                 DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar);
             }
         }
     }
 }
 // Kendisi ilk uygulanan filtre ise çalışan fonksiyon.
 private void BirdenFazlaDilBilenler(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmislar) //gelen filtreuygulanmislar1
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.ydil.Length > 3)
             {
                 filtreUygulanmislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmislar.sag = new FiltreUygulanmislar();
                 BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmislar.sag);
             }
             else
             {
                 BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmislar);
             }
         }
     }
 }
        /*
         * Her filtrede if-else if yapılarıyla üstteki nesnelerin null durumuna bakarak filtre uygulanmışların tekrar filtreye tabii tutulması sağlanıyor.
         * Bunun için ilk uygulanan filtrede tüm başvuranların adının bulunduğu bağlı listedeki isimlere filtre uygulandı sonraki filtrelerde bir önceki
         * filtrenin kullandığı bağlı listedeki isimler üzerinde filtreleme işlemi uygulanıyor. Son kullanılan filtreleme işleminde son bağlı listeye son
         * isimler giriliyor. Sonrasında o isimler listbox'da gösteriliyor.
         * */

        // Aşağıda ilk sıradaki uygulanacak filtre olduğundan ilkten başka yerde uygulanması imkansız olduğundan bunun diğer varyasyonu yok.
        private void EnAzLisansFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmislar) //gelen filtreuygulanmislar1
        {
            if (tumBasvuranlar != null)
            {
                if (tumBasvuranlar.ad != null)
                {
                    if (tumBasvuranlar.egitimDurumu.enAzLisans == true)
                    {
                        filtreUygulanmislar.ad  = tumBasvuranlar.ad;
                        filtreUygulanmislar.sag = new FiltreUygulanmislar(); // null hatası almamak için yapılan atama. Null iken ad'ı eşitleyemiyoruz.
                        EnAzLisansFiltre(tumBasvuranlar.sag, filtreUygulanmislar.sag);
                    }
                    else
                    {
                        // Filtrelenenlerin eklendiği bu yapıya ekleme yapılmadan sonraki başvurana geçileceğinden sağ tarafa geçmiyoruz.
                        EnAzLisansFiltre(tumBasvuranlar.sag, filtreUygulanmislar);
                    }
                }
            }
        }
 // En son yapılan filtre hangisiyse, oradaki isimler istenilen sonuçlar olacağı için ona göre kontrol ediliyor.
 private void HangiFiltrelenmisDegiskeni()
 {
     listBox1.Items.Clear();
     if (filtreUygulanmislar7 != null)
     {
         FiltrelemeSonucGoster(filtreUygulanmislar7);
     }
     else if (filtreUygulanmislar6 != null)
     {
         FiltrelemeSonucGoster(filtreUygulanmislar6);
     }
     else if (filtreUygulanmislar5 != null)
     {
         FiltrelemeSonucGoster(filtreUygulanmislar5);
     }
     else if (filtreUygulanmislar4 != null)
     {
         FiltrelemeSonucGoster(filtreUygulanmislar4);
     }
     else if (filtreUygulanmislar3 != null)
     {
         FiltrelemeSonucGoster(filtreUygulanmislar3);
     }
     else if (filtreUygulanmislar2 != null)
     {
         FiltrelemeSonucGoster(filtreUygulanmislar2);
     }
     else
     {
         FiltrelemeSonucGoster(filtreUygulanmislar1);
     }
     // Bellekte çok yer kaplamalarına gerek kalmadı, filtre işlemleri sonuçlandı. Null'a çevriliyor ki diğer filtrelemelere hazır olsun.
     filtreUygulanmislar1 = null;
     filtreUygulanmislar2 = null;
     filtreUygulanmislar3 = null;
     filtreUygulanmislar4 = null;
     filtreUygulanmislar5 = null;
     filtreUygulanmislar6 = null;
     filtreUygulanmislar7 = null;
 }
 // Kendisi ilk uygulanan filtre değilse kendisinden önceki filtre sonuçlarındaki isimler arasında filtre yapılacağı için bu fonksiyon çalışıyor.
 private void IngilizceBilenlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar OncekiFiltreUygulanmislar)
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.ad == OncekiFiltreUygulanmislar.ad && tumBasvuranlar.ydil.ToLower().Contains("en"))
             {
                 OncekiFiltreUygulanmislar.ad = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag    = new FiltreUygulanmislar(); //null değişken üzerinde eşitleme ataması yapamazsın hatasını önlemek için.
                 IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, OncekiFiltreUygulanmislar.sag);
             }
             else if (tumBasvuranlar.ad != OncekiFiltreUygulanmislar.ad)                                        // filtre koşulunu sağlamadığı için değil de isim farkından ise...
             {
                 IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar); // başvuranlarda gezinmeye devam, diğerlerinde gezinme yok.
             }
             else // filtre koşulunu sağlamadı adlar aynı, o halde önceki filtre sonucu ve tüm başvuranlarda gezinme devam, diğerinde değil.
             {
                 IngilizceBilenlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar.sag);
             }
         }
     }
 }
 // Kendisi ilk uygulanan filtre değilse çalışan fonksiyon.
 private void BelirliYasAltiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar oncekiFiltreUygulanmislar)
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.ad == oncekiFiltreUygulanmislar.ad && DateTime.Now.Year - tumBasvuranlar.dt.Year < Convert.ToInt32(belirliyasaltiTxt.Text))
             {
                 filtreUygulanmamislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag = new FiltreUygulanmislar();
                 BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, oncekiFiltreUygulanmislar.sag);
             }
             else if (tumBasvuranlar.ad != oncekiFiltreUygulanmislar.ad) // Adlar aynı değil, tüm başvuranlarda gezintiye devam
             {
                 BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar);
             }
             else // Adlar aynı koşul sağlanmadı, o zaman sıradaki başvuranlara geçiliyor.
             {
                 BelirliYasAltiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar.sag);
             }
         }
     }
 }
 // Kendisi ilk uygulanan filtre değilse çalışan fonksiyon.
 private void IsDeneyimiFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar oncekiFiltreUygulanmislar)
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.ad == oncekiFiltreUygulanmislar.ad && tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi / 12 >= Convert.ToInt32(mindeneyimTxt.Text))
             {
                 filtreUygulanmamislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag = new FiltreUygulanmislar();
                 IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, oncekiFiltreUygulanmislar.sag);
             }
             else if (tumBasvuranlar.ad != oncekiFiltreUygulanmislar.ad) // adlar farklıysa gezintiye devam
             {
                 IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar);
             }
             else // Gezinti sonrası aynı ad ama koşul sağlanmıyorsa sonraki başvuranlarla kontrol yapılıyor
             {
                 IsDeneyimiFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, oncekiFiltreUygulanmislar.sag);
             }
         }
     }
 }
 // Kendisi ilk uygulanan filtre değilse çalışan fonksiyon.
 private void DeneyimsizlerFiltre(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar OncekiFiltreUygulanmislar) //gelen filtreuygulanmislar1
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.ad == OncekiFiltreUygulanmislar.ad && tumBasvuranlar.isDeneyimi.sag.sag.sag.calismasuresi == 0)
             {
                 filtreUygulanmamislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag = new FiltreUygulanmislar();
                 DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar.sag, OncekiFiltreUygulanmislar.sag);
             }
             else if (tumBasvuranlar.ad != OncekiFiltreUygulanmislar.ad) // adlar farklıysa aynı olana kadar gezin
             {
                 DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar);
             }
             else // Gezinildi, adlar aynı ama koşul sağlanmadı o zaman hem önceki filtre sonuçları hem de tüm başvuranlarda sonraki şahısa devam.
             {
                 DeneyimsizlerFiltre(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar.sag);
             }
         }
     }
 }
 // Kendisi ilk uygulanacak filtre değilse çalışacak fonksiyon.
 private void BirdenFazlaDilBilenler(TumBasvuranlar tumBasvuranlar, FiltreUygulanmislar filtreUygulanmamislar, FiltreUygulanmislar OncekiFiltreUygulanmislar)
 {
     if (tumBasvuranlar != null)
     {
         if (tumBasvuranlar.ad != null)
         {
             if (tumBasvuranlar.ad == OncekiFiltreUygulanmislar.ad && tumBasvuranlar.ydil.Length > 3)
             {
                 filtreUygulanmamislar.ad  = tumBasvuranlar.ad;
                 filtreUygulanmamislar.sag = new FiltreUygulanmislar();
                 BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmamislar.sag, OncekiFiltreUygulanmislar.sag);
             }
             else if (tumBasvuranlar.ad != OncekiFiltreUygulanmislar.ad) // adlar farklıysa adlar aynı olana kadar gezin
             {
                 BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar);
             }
             else // Gezinildi, adlar aynı ama koşul sağlanmadı o zaman hem önceki filtre sonuçları hem de tüm başvuranlarda sonraki şahısa devam.
             {
                 BirdenFazlaDilBilenler(tumBasvuranlar.sag, filtreUygulanmamislar, OncekiFiltreUygulanmislar.sag);
             }
         }
     }
 }
 // Bütün null kontrollerinin nedeni kendisinden önce yapılan filtreleme var mı diye bakıp onun sonuçları üzerine tekrar filtreleme yapılıyor olması
 private void Filtrele()
 {
     if (secilenfiltrelerListBox.Items.Contains("En az lisans mezunu olanlar"))
     {
         filtreUygulanmislar1 = new FiltreUygulanmislar();
         EnAzLisansFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1);
     }
     if (secilenfiltrelerListBox.Items.Contains("İngilizce bilenler"))
     {
         if (filtreUygulanmislar1 != null)
         {
             filtreUygulanmislar2 = new FiltreUygulanmislar();
             IngilizceBilenlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar2, filtreUygulanmislar1);
         }
         else
         {
             filtreUygulanmislar1 = new FiltreUygulanmislar();
             IngilizceBilenlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1);
         }
     }
     if (secilenfiltrelerListBox.Items.Contains("Birden fazla yabancı dil bilenler"))
     {
         if (filtreUygulanmislar2 != null)
         {
             filtreUygulanmislar3 = new FiltreUygulanmislar();
             BirdenFazlaDilBilenler(Başvurular.tumBasvuranlar, filtreUygulanmislar3, filtreUygulanmislar2);
         }
         else if (filtreUygulanmislar1 != null)
         {
             filtreUygulanmislar3 = new FiltreUygulanmislar();
             BirdenFazlaDilBilenler(Başvurular.tumBasvuranlar, filtreUygulanmislar3, filtreUygulanmislar1);
         }
         else
         {
             filtreUygulanmislar1 = new FiltreUygulanmislar();
             BirdenFazlaDilBilenler(Başvurular.tumBasvuranlar, filtreUygulanmislar1);
         }
     }
     if (secilenfiltrelerListBox.Items.Contains("Deneyimsizler"))
     {
         if (filtreUygulanmislar3 != null)
         {
             filtreUygulanmislar4 = new FiltreUygulanmislar();
             DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar4, filtreUygulanmislar3);
         }
         else if (filtreUygulanmislar2 != null)
         {
             filtreUygulanmislar4 = new FiltreUygulanmislar();
             DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar4, filtreUygulanmislar2);
         }
         else if (filtreUygulanmislar1 != null)
         {
             filtreUygulanmislar4 = new FiltreUygulanmislar();
             DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar4, filtreUygulanmislar1);
         }
         else
         {
             filtreUygulanmislar1 = new FiltreUygulanmislar();
             DeneyimsizlerFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1);
         }
     }
     if (mindeneyimTxt.Text != "")
     {
         if (filtreUygulanmislar4 != null)
         {
             filtreUygulanmislar5 = new FiltreUygulanmislar();
             IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar4);
         }
         else if (filtreUygulanmislar3 != null)
         {
             filtreUygulanmislar5 = new FiltreUygulanmislar();
             IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar3);
         }
         else if (filtreUygulanmislar2 != null)
         {
             filtreUygulanmislar5 = new FiltreUygulanmislar();
             IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar2);
         }
         else if (filtreUygulanmislar1 != null)
         {
             filtreUygulanmislar5 = new FiltreUygulanmislar();
             IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar5, filtreUygulanmislar1);
         }
         else
         {
             filtreUygulanmislar1 = new FiltreUygulanmislar();
             IsDeneyimiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1);
         }
     }
     if (belirliyasaltiTxt.Text != "")
     {
         if (filtreUygulanmislar5 != null)
         {
             filtreUygulanmislar6 = new FiltreUygulanmislar();
             BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar5);
         }
         else if (filtreUygulanmislar4 != null)
         {
             filtreUygulanmislar6 = new FiltreUygulanmislar();
             BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar4);
         }
         else if (filtreUygulanmislar3 != null)
         {
             filtreUygulanmislar6 = new FiltreUygulanmislar();
             BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar3);
         }
         else if (filtreUygulanmislar2 != null)
         {
             filtreUygulanmislar6 = new FiltreUygulanmislar();
             BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar2);
         }
         else if (filtreUygulanmislar1 != null)
         {
             filtreUygulanmislar6 = new FiltreUygulanmislar();
             BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar6, filtreUygulanmislar1);
         }
         else
         {
             filtreUygulanmislar1 = new FiltreUygulanmislar();
             BelirliYasAltiFiltre(Başvurular.tumBasvuranlar, filtreUygulanmislar1);
         }
     }
     if (ehliyetTxt.Text != "")
     {
         listBox1.Items.Clear();
         FiltrelemeIslemi(Başvurular.tumBasvuranlar, 7); //Üstteki fonksiyonda ehliyet filtresinin numarası 7
         goto Filtresonubypass;                          // Ehliyet filtresi sadece tek yapılabiliyor, önceki filtreleme sonuçlarını kontrol etmeye gerek yok.
     }
     HangiFiltrelenmisDegiskeni();
     Filtresonubypass :;
 }