Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Layla Porter
14m 6s
C#'ta, List sınıfı, çok yönlü bir koleksiyon türüdür. İçsel veri yapısı olarak bir dinamik diziye dayanır, elemanların etkin bir şekilde manipüle edilmesine olanak tanır. Bir Liste oluşturduğunuzda, baştan belleği optimize etmek için varsayılan bir başlangıç kapasitesini belirtebilirsiniz. Bu kapasite, listenin başlangıçta bellek yeniden tahsis edilmeden kaç elemanı tutabileceğidir.
Layla Porter'ın C# listelerinin işlevselliğine derinlemesine daldığı "C# for Beginners Part 7 - Querying Data with LINQ" videosunda, verileri etkin bir şekilde sorgulamak için LINQ (Dil Entegre Sorgusu) nasıl kullanılacağını gösterir. Bu makale, Layla'nın videosundaki temel kavramları ve örnekleri parçalayarak, C# listeleri için kapsamlı bir başlangıç sağlar.
Layla, videosunun başında (0:03) belirttiği gibi, C#'ta bir liste, geliştiricilerin bir eleman koleksiyonunu depolamasını ve manipüle etmesini sağlayan çok yönlü bir veri yapısıdır. Dizilerin aksine, listeler dinamik olarak boyutlandırılabilir, bu da eleman sayısının başlangıçta bilinmediği durumlar için idealdir.
Bir Liste kullanmak basittir. Belirtilen nesneyi listenin sonuna ekleyen Add yöntemiyle eleman ekleyebilirsiniz. Liste sıfır bazlı bir indeksi kullanır, yani ilk eleman 0 indeksinde erişilir. Ayrıca köşeli parantezler ([]) notasyonu kullanarak belirtilen bir indeksle elemanlara erişebilirsiniz.
Listeyi iterasyon yapmak için, her elemanın bulundukları sırayla üstünden geçen bir foreach döngüsü kullanabilirsiniz. Belirli bir elemanın ilk ortaya çıkışını bulmanız gerekiyorsa, belirtilen bir koşula dayalı olarak arama yapan bir öngörün ile IndexOf gibi yöntemleri kullanabilirsiniz.
Liste güçlü bir şekilde tip belirlenmiştir, bu da belirli bir türde (T) nesneleri tuttuğu anlamına gelir. Bu, tür güvenliğini sağlar ve belirtilen nesne türü tarafından tanımlanan özellikler ve yöntemlerin kullanımını etkinleştirir. Varsayılan olarak listenin etkin bir şekilde elemaları düzenlemek için varsayılan bir karma fonksiyonu kullanır.
Layla'nın videosunda gösterildiği gibi, Listenin ve Liste sınıfı yöntemlerinin çalışmasına yakından bakalım.
C#'ta bir liste oluşturduğunuzda, iç veri yapısını optimize etmek için belirtilen bir başlangıç kapasitesini ayarlayabilirsiniz. Listeler çok yönlüdür ve belirli bir eleman koleksiyonundan başlatılabilir. Öğelere bir int indeks kullanarak erişebilir ve foreach döngüsü ile bunları yineleyebilirsiniz. Sözlüklerden farklı olarak, listeler varsayılan bir karma fonksiyonuna dayanmazlar ve güçlü bir şekilde tür belirlenmiş nesneleri depolayarak verilerinizin yönetiminde tür güvenliği ve tutarlılık sağlarlar.
(0:44)'te Layla, listenin nasıl başlatılacağını ve doldurulacağını gösteren bir peynir listesi oluşturur. C#'ta bir liste, içindeki eleman türünü temsil eden T ile List sınıfı kullanılarak oluşturulabilir.
List<Cheese> cheeseList = new List<Cheese>
{
new Cheese(1, "Stilton", 3.0m, 5),
new Cheese(2, "Cheddar", 2.25m, 3),
new Cheese(3, "Pineapple", 3.5m, 1),
new Cheese(4, "Brie", 5.5m, 2),
new Cheese(5, "Roquefort", 3.5m, 5),
};Dim cheeseList As New List(Of Cheese) From {
New Cheese(1, "Stilton", 3.0D, 5),
New Cheese(2, "Cheddar", 2.25D, 3),
New Cheese(3, "Pineapple", 3.5D, 1),
New Cheese(4, "Brie", 5.5D, 2),
New Cheese(5, "Roquefort", 3.5D, 5)
}Yukarıdaki örnekte, Layla List<Cheese> oluşturmak için koleksiyon başlatıcı sözdizimini kullanarak, listeyi Cheese nesneleriyle tanımlar ve doldurur. Her peynir nesnesi için ID, ad, fiyat ve güç gibi özellikler belirleyerek, C#'ta bir listenin oluşturulması ve başlatılmasının gösterimini yapar.
Layla Porter, cheeseList üzerinden dönmek için bir foreach döngüsü nasıl kullanılacağını ve her peyniri ID ve Ad ile yalnızca nasıl yazdırılacağını gösterir. Aşağıda kodla birlikte bir açıklama bulunmaktadır:
foreach (var cheese in cheeseList)
{
Console.WriteLine($"ID: {cheese.ID}, Name: {cheese.Name}");
}For Each cheese In cheeseList
Console.WriteLine($"ID: {cheese.ID}, Name: {cheese.Name}")
NextYukarıdaki kodda, Layla cheeseList üzerinde dolaşmak için bir foreach döngüsü kullanır. Bu, listenin tüm elemanlarını yazdırır. Döngü, listedeki her Cheese nesnesi üzerinden geçer. Her iterasyonda, cheese değişkeni belirtilen indisteki mevcut Cheese nesnesini tutar. C#'ta bir listeden belirli elemanlara nasıl erişip göstereceğini göstererek, peynirin her elemanının ID ve Ad özelliklerini Console.WriteLine kullanarak yazdırır.
Layla Porter, 2:45'teki videoda kullanıcının girdisine dayalı olarak belirli bir peyniri nasıl arayacağını gösterir. Kullanıcıdan peynir adını almak için ReadLine metodunu kullanır:
string cheeseName = Console.ReadLine();Dim cheeseName As String = Console.ReadLine()Liste'de bir öğe ararken, Layla 2:51'de çok önemli bir anahtar noktayı vurgular. Eğer LINQ kullanmasaydık, kullanıcı girişiyle eşleşen bir adı bulmak için koleksiyonumuzdaki her peynir üzerinde manuel olarak döngü yapmamız gerekecekti, ancak LINQ'nun yardımcı kütüphaneleri bu süreci daha verimli hale getirir. Aşağıdaki kod parçacığı, Layla'nın (3:40) sadece LINQ sorgu sözdizimini kullanarak for döngüsü kullanmadan liste öğeleri arasında nasıl iterasyon yaptığını gösterir:
if (cheeseList.Any(cheese => cheese.Name == cheeseName))
{
Cheese cheese = cheeseList.FirstOrDefault(c => c.Name == cheeseName);
Console.WriteLine($"{cheese.Name} cheese costs £{cheese.Price.ToString()} and has a strength of {cheese.Strength}.");
}
else
{
Console.WriteLine("I'm sorry, we don't have that cheese.");
}If cheeseList.Any(Function(cheese) cheese.Name = cheeseName) Then
Dim cheese As Cheese = cheeseList.FirstOrDefault(Function(c) c.Name = cheeseName)
Console.WriteLine($"{cheese.Name} cheese costs £{cheese.Price.ToString()} and has a strength of {cheese.Strength}.")
Else
Console.WriteLine("I'm sorry, we don't have that cheese.")
End IfYukarıdaki kodda:
Layla, listeyi manuel olarak taramak yerine, daha verimli bir arama için LINQ kullanabileceğimizi açıklıyor. Any metodu, listedeki herhangi bir peynirin kullanıcı tarafından girilen adla eşleşip eşleşmediğini kontrol eder.
Eğer bir eşleşme bulunursa, bu elemanın var olduğu anlamına gelir, FirstOrDefault metodu, girilen adla eşleşen ilk peyniri getirir. Bu yöntem güvenlidir çünkü eşleşme bulunmazsa null döndürür ve potansiyel hataları önler.
Eğer peynir bulunursa, Adı, Fiyatı ve Gücü yazdırılır. Bulunmazsa, peynirin bulunmadığına dair bir mesaj gösterilir.
Bu yaklaşım, C#'ta koleksiyonları ararken LINQ'nun etkinliğini ve basitliğini gözler önüne serer. Kod parçacığının çıktısı 7:19'da gösterilmiştir: (Aşağıdakinden daha iyi bir resim mi?)

Layla, 8:00'de dizelerle çalışırken, onların büyük harf-küçük harf duyarlı olduğunu hatırlamanın önemli olduğunu hatırlatır. Peynir adlarındaki karşılaştırmalarımızın büyük-küçük harf duyarsız olması için kullanıcı girdiğini ve listemizdeki peynir adlarını .ToLower() metodunu kullanarak küçük harfe dönüştürmemiz gerekir. Bu, kullanıcının herhangi bir türde büyük harf kullanma imkanı tanır ve kodumuz yine de doğru peynirle eşleşir. Unutmayın ki dize harf duyarlılığı can sıkıcı olabilir, bu yüzden onu doğru şekilde yönetmek çok önemlidir.
Layla 8:50'de, kullanıcıların peynirleri güçlerine göre filtreleyebileceği pratik bir örnek yapıyor, kullanıcının girdisiyle LINQ sorgularını nasıl birleştirileceğini gösteriyor.
Console.WriteLine("What strength cheese are you interested in - choose between 1 and 5");
string strengthString = Console.ReadLine();Console.WriteLine("What strength cheese are you interested in - choose between 1 and 5")
Dim strengthString As String = Console.ReadLine()8:00'de Layla, kullanıcıdan 1 ile 5 arasında bir güç değeri seçmesini isteyerek başlar. Bu, basit bir Console.WriteLine ile giriş istemek ve ardından Console.ReadLine() ile yazdıklarını almakla yapılır.
bool isInt = int.TryParse(strengthString, out int strength);Dim strength As Integer
Dim isInt As Boolean = Integer.TryParse(strengthString, strength)Sonra 9:16'da girdilerinin gerçek bir numara olduğundan emin oluyor. Bunun için int.TryParse kullanmayı tavsiye eder. Girdi doğruysa ve başarıyla bir tam sayıya dönüştürülürse, harika! Değilse, bunu nazikçe ele alabiliriz.
List<Cheese> cheeseByStrength = cheeseList.Where(c => c.Strength == strength).ToList();Dim cheeseByStrength As List(Of Cheese) = cheeseList.Where(Function(c) c.Strength = strength).ToList()Şimdi, Layla'nın videosunda 10:25'de eğlenceli kısım başlıyor. Burada, peynir listemizi cheeseList yani LINQ kullanarak nasıl filtreleyeceğimizi gösterir. LINQ'un Where metodu ve hızlı bir lambda ifadesi (c => c.Strength == strength) ile kullanıcının seçtiği güçle eşleşen peynirleri sadece çıkarır. Bu bize yeni bir liste, cheeseByStrength verir.
foreach (var cheese in cheeseByStrength)
{
Console.WriteLine($"Name: {cheese.Name} cheese");
}For Each cheese In cheeseByStrength
Console.WriteLine($"Name: {cheese.Name} cheese")
NextSon olarak 12:03'de, işleri güzel bir şekilde toparlamak için, Layla bir foreach döngüsü ile cheeseByStrength üzerinde dolaşır. Bu listedeki her peynir için, Console.WriteLine'de belirtilen önermeyi kullanarak adını yazdırır. Basit ve etkili!
12:17'de programı çalıştırırken, Layla kullanıcının bir güç değeri girdiği ve listenin yalnızca belirtilen güçteki peynirleri gösterecek şekilde filtrelendiğini göstermektedir. Örnek çıktı aşağıda gösterilmiştir: (Daha iyi bir resim mi mümkün?)

Layla'nın videosu C# listelerinin ve LINQ kullanarak nasıl sorgulanacaklarını etkili bir şekilde tanıtıyor. Onun örneklerini ve açıklamalarını takip ederek, yeni başlayanlar C#'ta listelerle çalışmanın ve verileri sorgulamanın sağlam bir temelini kazanabilir. Daha fazla ayrıntı ve canlı kod oturumları için Layla'nın YouTube kanalına göz atın ve canlı yayınlarına katılın.
Listedeki sınıfın Count özelliği, Insert metodu, önerme fonksiyonları ve daha fazlası gibi çeşitli yöntem ve özellikleri keşfetmeyi, liste anlamanızı ve etkili bir şekilde manipüle etme yeteneğinizi artırmayı unutmayın.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy