COLLECTIONS

ArrayList , List, Dictionary örnekleri içermektedir.

 class Program
    {
        static void Main(string[] args)
        {
            #region ArrayList

            ArrayList cities = new ArrayList();
            cities.Add("Adana");
            cities.Add("Ankara");
            foreach (var item in cities)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine(cities[1]);

            cities.Add(1); //object tipinde ister yani bütün veri tiplerinden veri alabilmektedir.

            #endregion

            #region List -> Collections

            List<string> city = new List<string>();
            // List -> collection'dır. <> ise Generic konusunda değinilecek. collection'ın tipini verdik burada
            city.Add("Ankara");

            List<Customer> customers = new List<Customer>();
            customers.Add(new Customer { Id = 1, Name = "Emre" }); // bu kullanımda tipini class olarak verdik.
            customers.Add(new Customer { Id = 2, Name = "Mert" });

            Console.WriteLine(customers.Count()); // Adeti verecektir.

            Customer customer1 = new Customer()
            {
                Id = 3,
                Name = "Ali"
            };
            customers.Add(customer1);

            customers.AddRange(new Customer[2] // array almaktadır. 2 elemanlı bir customer array yazıp ekleyebiliriz.
                {
                    new Customer{Id=4, Name="Ayşe"},
                    new Customer{Id=5, Name="Fatma"}
                });

            // customers.Clear(); // listenin bütün elemanlarını temizlemektedir.

            Console.WriteLine(customers.Contains(new Customer { Id = 1, Name = "Emre" }));
            // Bu şekilde içerde var mı diye arattığımızda aslında yeni bir new'leme yaptığımızdan sonuç false dönecektir.
            // Burada true dönmesi için reference göndermeliyiz. Value değil

            Console.WriteLine(customers.Contains(customer1)); // değer değil reference gönderdiğimizden true dönecektir.

            Console.WriteLine(customers.IndexOf(customer1)); // elimdeki customerın kaçıncı sırada olduğunu verecektir. 0'dan başlar index

            customers.LastIndexOf(customer1); // aramaya sondan başlayacaktır.

            customers.Insert(0, customer1); // değeri istediğimiz index'e eklememizi sağlamaktadır.

            customers.Remove(customer1); //verdiğimiz değeri bulup silecektir. customer1 liste'de 3 kere ekli ise 1 tanesini siler ve durur.

            customers.RemoveAll(c => c.Name == "Ali"); //predicate -> Name'i Ali olanların hepsini silecektir.

            Console.WriteLine("-------- MÜŞTERİ LİSTESİ ---------");

            foreach (var customer in customers)
            {
                Console.WriteLine(customer.Name);
            }

            var a = customers.Where(p => p.Name.Contains("a")).ToList();
            

            #endregion

            #region Dictionary -> Collections

            Console.WriteLine("-------- DICTIONARY ---------");

            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            dictionary.Add("book", "kitap");
            dictionary.Add("table", "tablo");
            dictionary.Add("computer", "bilgisayar");

            Console.WriteLine(dictionary["table"]);
            
            foreach (var item in dictionary)
            {
                Console.WriteLine(item); // bu şekilde key, value ikilisi birlikte verebilmektedir.
                Console.WriteLine(item.Key);
                Console.WriteLine(item.Value); // ayrı ayrı da alabilmekteyiz
            }

            // dictionary bir collection'dır. collection metotlarını kullanabiliriz.
            // dictionarya özel aşağıdaki metotları da vardır

            dictionary.ContainsKey("glass");
            dictionary.ContainsValue("bardak");

            #endregion
        }
    }

    class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }