Clear        


                
                    namespace _18_CollectionMethods.Demos._2_IsimBulma
{
    public class IsimBulmaDemo
    {
        #region İsim Bulma Demo'yu Çalıştıran Method
        public void Calistir()
        {
            Console.WriteLine("\n*** İsim Bulma Demo ***");

            // local değişkenler
            List<string> isimler = new List<string>(); // isimler referans değişkeni üzerinden string tipindeki List objesi initialization
            string giris;
            string bulunanIsim;

            Console.Write("İsim listesine eklenecek isim giriniz: (ç: çıkış) ");
            giris = Console.ReadLine();



            #region İsim Listesini Doldurma
            while (giris != "ç") // kullanıcı ç girmediği sürece döngü devam edecek
            {
                isimler.Add(giris); // kullanıcının girdiği ismi listeye ekliyoruz

                Console.Write("İsim listesine eklenecek isim giriniz: (ç: çıkış) ");
                giris = Console.ReadLine();
            }
            #endregion



            if (isimler.Count > 0) // eğer kullanıcı isimler koleksiyonuna en az bir isim girdiyse
            {
                #region İsim Arama
                // döngü koşulu için ilk giris değerini alma
                Console.Write("İsim arama işlemi seçiniz: (t: tam isim, p: ismin parçası, ç: çıkış) ");
                giris = Console.ReadLine();

                while (giris != "ç") // döngü koşulu olarak kullanıcı ç girmediği sürece döngü devam edecek
                {
                    bulunanIsim = null; // ilk başta ismi bulamadığımızı varsayıyoruz

                    if (giris == "t" || giris == "p") // kullanıcı tam isim veya parçalı isim seçtiyse
                    {
                        if (giris == "t") // kullanıcı tam isim seçtiyse
                        {
                            Console.Write("Aranacak tam ismi giriniz: ");
                            giris = Console.ReadLine();

                            // 1. yöntem:
                            //foreach (string isim in isimler) // isimler koleksiyonundaki her bir isim için
                            //{
                            //    if (isim == giris) // eğer döngü turundaki isim giris'e eşitse
                            //    {
                            //        bulunanIsim = isim; // döngü turundaki ismi bulunanIsim'e atıyoruz
                            //        break; // ismi bulduğumuz için döngüye devam etmeye gerek olmadığından döngüyü kırıyoruz
                            //    }
                            //}

                            // 2. yöntem:
                            int bulunanIsimIndex = isimler.IndexOf(giris); // giris'in isimler koleksiyonundaki index'ini alıyoruz
                            if (bulunanIsimIndex != -1) // eğer bulunanIsimIndex -1 değilse, giris isimler koleksiyonunda bulunmuş demektir
                            {
                                bulunanIsim = isimler[bulunanIsimIndex]; // ismi koleksiyondaki bulunanIsimIndex'i üzerinden bulunanIsim'e atıyoruz
                            }
                        }
                        else // if (giris == "p") // son koşul olduğu için if kısmını yazmaya gerek yok, kullanıcı ismin parçası seçtiyse
                        {
                            Console.Write("Aranacak ismin parçasını giriniz: ");
                            giris = Console.ReadLine();

                            foreach (string isim in isimler) // isimler koleksiyonundaki her bir isim için
                            {
                                if (isim.Contains(giris)) // eğer döngü turundaki isim giris'i içeriyorsa
                                {
                                    bulunanIsim = isim; // döngü turundaki ismi bulunanIsim'e atıyoruz
                                    break; // ismi bulduğumuz için döngüye devam etmeye gerek olmadığından döngüyü kırıyoruz
                                }
                            }
                        }

                        // arama sonucunu yazdırma
                        // 1. yöntem:
                        //if (bulunanIsim is null) // if (bulunanIsim == null) da yazılabilir
                        //    Console.WriteLine("Aradığınız isim bulunamadı!");
                        //else
                        //    Console.WriteLine($"Aradığınız isim bulundu: \"{bulunanIsim}\".");

                        // 2. yöntem:
                        Console.WriteLine(bulunanIsim is null ? "Aradığınız isim bulunamadı!" : $"Aradığınız isim bulundu: \"{bulunanIsim}\".");
                    }

                    // döngü koşulu için alınan giris değerini güncelleme
                    Console.Write("İsim arama işlemi seçiniz: (t: tam isim, p: ismin parçası, ç: çıkış) ");
                    giris = Console.ReadLine();
                }
                #endregion
            }
        }
        #endregion
    }
}