0Pricing
C# Academy · Ders

Toplu İşlemler ve ToList

Count, SUM ve somutlaştırma.

Toplu İşlemler ve ToList, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.

Öğeleri Sayma

Count, bir dizideki öğelerin sayısını döndürür. Bir koşul ifadesiyle kullanıldığında yalnızca eşleşen öğeleri sayar.

Yürütmeyi zorunlu kılar; bu nedenle toplamı üretmek için dizinin tamamı üzerinde yineleme yapılır. Bu bir toplulaştırma işlemidir.

using System;
using System.Linq;

int[] nums = { 1, 2, 3, 4, 5 };
Console.WriteLine(nums.Count());
Console.WriteLine(nums.Count(n => n > 2));

Değerleri Toplama

Sum, sayısal değerleri toplar. Sayısal bir dizi üzerinde öğeleri toplar; bir seçiciyle kullanıldığında her öğeden elde edilen dönüştürülmüş değeri toplar.

Kaynağın veya seçicinin sonucunun sayısal türünü döndürür.

using System;
using System.Linq;
using System.Collections.Generic;

record Order(int Qty, decimal Price);
var orders = new List<Order> { new(2, 5m), new(3, 4m) };
decimal total = orders.Sum(o => o.Qty * o.Price);
Console.WriteLine(total);

Değerlerin Ortalamasını Alma

Average, aritmetik ortalamayı hesaplar. Sum gibi isteğe bağlı bir seçici kabul eder.

Kaynak tam sayılardan oluşsa bile sonuç kayan noktalı bir türdür; örneğin double. Böylece bölme sırasında duyarlılık kaybı yaşanmaz.

using System;
using System.Linq;

int[] scores = { 80, 90, 100 };
double avg = scores.Average();
Console.WriteLine(avg);

Min ve Max

Min ve Max, en küçük ve en büyük değerleri döndürür. Bir seçiciyle kullanıldıklarında dönüştürülmüş bir anahtar üzerinde işlem yaparlar.

Modern .NET'te MaxBy ve MinBy, yalnızca anahtar değerini değil, uç değere sahip öğenin tamamını döndürür.

using System;
using System.Linq;
using System.Collections.Generic;

record P(string Name, int Age);
var ps = new List<P> { new("Ana", 30), new("Bo", 22) };
var oldest = ps.MaxBy(p => p.Age);
Console.WriteLine(oldest!.Name);

Boş Dizilerin Tuzakları

Boş bir dizide, değer türleri üzerinde kullanılan Average, Min ve Max işlemleri InvalidOperationException oluşturur. Sum sıfır, Count ise yine sıfır döndürür.

Olası olarak boş verilerin ortalamasını almadan önce Any() ile kontrol edin veya DefaultIfEmpty kullanın.

using System;
using System.Linq;

int[] empty = Array.Empty<int>();
double avg = empty.DefaultIfEmpty(0).Average();
Console.WriteLine(avg);

Özel Katlamalar için Aggregate

Aggregate, bir biriktirici işleviyle bir diziyi tek bir değere indirger. Sum ve diğer işlemlerin temelindeki genel biçim budur.

Bir başlangıç değeri sağlayabilir ve her öğeyi devam eden sonuca ekleyebilirsiniz. Bu yaklaşım çarpımlar, birleştirmeler veya özel mantık için kullanışlıdır.

using System;
using System.Linq;

int[] nums = { 1, 2, 3, 4 };
int product = nums.Aggregate(1, (acc, n) => acc * n);
Console.WriteLine(product);

ToList ile Sonuçları Belleğe Alma

ToList, sorguyu hemen yürütür ve sonuçları bir List<T> içine kopyalar. Böylece ertelenmiş yürütme kasıtlı olarak sona erer.

Kararlı bir anlık görüntü almak, pahalı bir işlem hattını yeniden çalıştırmaktan kaçınmak veya dizinleme ve Count özelliği gibi liste özelliklerinden yararlanmak için kullanın.

using System;
using System.Linq;

int[] nums = { 1, 2, 3, 4 };
var evens = nums.Where(n => n % 2 == 0).ToList();
evens.Add(6);
Console.WriteLine(string.Join(", ", evens));

ToArray ve ToDictionary

İlgili sonuçları belleğe alma yöntemleri arasında sabit boyutlu bir dizi için ToArray, anahtar tabanlı arama için ise ToDictionary bulunur.

ToDictionary bir anahtar seçici ve isteğe bağlı bir değer seçici alır; iki öğe aynı anahtarı üretirse hata oluşturur.

using System;
using System.Linq;
using System.Collections.Generic;

record P(string Name, int Age);
var ps = new List<P> { new("Ana", 30), new("Bo", 22) };
var byName = ps.ToDictionary(p => p.Name, p => p.Age);
Console.WriteLine(byName["Ana"]);

Sonuçları Neden Belleğe Almalı

Ertelenmiş sorgular, her yinelendiklerinde yeniden çalışır. Bir işlem hattı maliyetliyse veya değişen bir kaynaktan okuyorsa bu tekrarlar hatalara ve yavaşlığa neden olur.

ToList çağrısı sonuçları bir kez yakalar; böylece sonraki okumalar hızlı ve tutarlı olur.

using System;
using System.Linq;

int runs = 0;
int[] nums = { 1, 2, 3 };
var list = nums.Select(n => { runs++; return n; }).ToList();
foreach (var _ in list) { }
foreach (var _ in list) { }
Console.WriteLine(runs);

First, Single ve Any

Öğe işleçleri de yürütmeyi zorunlu kılar. First ilk eşleşmeyi döndürür; eşleşme yoksa hata oluşturur. FirstOrDefault bunun yerine varsayılan değeri döndürür, Single ise tam olarak bir öğe olmasını gerektirir.

Any, tüm öğeleri saymadan bir dizide eşleşen herhangi bir öğe olup olmadığını bildirir.

using System;
using System.Linq;

int[] nums = { 3, 8, 5, 12 };
int firstBig = nums.First(n => n > 7);
bool hasOdd = nums.Any(n => n % 2 == 1);
Console.WriteLine($"{firstBig} {hasOdd}");

Tam İşlem Hattı

Gerçek sorgular; filtreleme, projeksiyon, sıralama ve toplulaştırma işlemlerini art arda kullanır ve çoğu zaman sonuçları belleğe alan bir yöntemle sona erer.

Sorguyu yukarıdan aşağıya okuyun: filtreleyin, sonra biçimlendirin, ardından sıralayın ve sonuçları toplayın. Son ToList çağrısı tüm işlem hattını bir kez çalıştırır.

using System;
using System.Linq;
using System.Collections.Generic;

record Sale(string City, int Amt);
var sales = new List<Sale> { new("NY", 5), new("LA", 3), new("NY", 9) };
var top = sales.Where(s => s.Amt > 4)
               .OrderByDescending(s => s.Amt)
               .Select(s => s.City)
               .ToList();
Console.WriteLine(string.Join(", ", top));

Kısa Kontrol

Ertelenmiş yürütme ve sonuçları belleğe alma hakkında düşünün.

Özet

Toplulaştırma işleçleri bir diziyi tek bir değere indirger: Count, Sum, Average, Min/Max, MinBy/MaxBy ve genel amaçlı Aggregate. Bunlar yürütmeyi zorunlu kılar ve boş kaynaklarda hata oluşturabilir.

ToList, ToArray ve ToDictionary sonuçları belleğe alır; ertelemeyi sona erdirerek pahalı bir işlem hattının bir kez çalışmasını sağlar. Böylece LINQ ile filtreleme ve projeksiyon araç seti tamamlanır.

Sıkça Sorulan Sorular

“Toplu İşlemler ve ToList” dersi ücretsiz mi?

Evet — “Toplu İşlemler ve ToList” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.

“Toplu İşlemler ve ToList” dersinde ne öğreneceğim?

Count, SUM ve somutlaştırma. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Toplu İşlemler ve ToList” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Where ve Filtreleme
  2. SELECT ve Projeksiyon
  3. OrderBy ve Gruplama
  4. Toplu İşlemler ve ToList
← C# Academy Sayfasına Dön