GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)
Ögeleri gruplayın, dizileri birleştirin, Aggregate ile azaltın ve anonim türleri kullanarak temiz sonuçlar üretin.
GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler), CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 1. 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 3 dersten oluşur.
Gelişmiş işleçlere genel bakış
Bugün:
- GroupBy: anahtara göre gruplar oluşturur
- Join: iki diziyi bir anahtar üzerinden birleştirir
- Aggregate: tek bir değere indirger
- Anonim türler: düzenli izdüşümler sağlar
Anahtara göre gruplama
GroupBy, bir Key ve bu anahtarı paylaşan öğelerden oluşan bir iç dizi içeren gruplar oluşturur.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] words = new string[] { "ant", "cat", "tiger", "lion", "dog", "eagle" };
var groups = words.GroupBy(w => w.Length);
foreach (var g in groups)
{
Console.WriteLine("Len " + g.Key + ":");
foreach (string w in g) Console.WriteLine(" - " + w);
}
}
}
Anahtara göre iç birleştirme
Join, iki dizideki öğeleri anahtara göre eşleştirir ve birleştirilmiş sonucu izdüşüm olarak oluşturur.
using System;
using System.Linq;
public sealed class Customer { public int Id; public string Name; public Customer(int id, string name){ Id=id; Name=name; } }
public sealed class Order { public int CustomerId; public string Item; public Order(int cid, string item){ CustomerId=cid; Item=item; } }
public class Program
{
public static void Main(string[] args)
{
var customers = new Customer[] { new Customer(1,"Ada"), new Customer(2,"Bob") };
var orders = new Order[] { new Order(1,"Book"), new Order(1,"Pen"), new Order(2,"Map") };
var joined = customers.Join(
orders,
c => c.Id,
o => o.CustomerId,
(c, o) => c.Name + " -> " + o.Item);
foreach (string s in joined) Console.WriteLine(s);
}
}
Aggregate temelleri
Aggregate, bir diziyi tek bir sonuca indirgemek için bir biriktiriciyi uygular. Uygun bir başlangıç değeri seçin.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] xs = new int[] { 1, 2, 3, 4 };
// Product with seed 1
int product = xs.Aggregate(1, (acc, n) => acc * n);
Console.WriteLine("Product = " + product); // 24
// Join words with a separator using seed
string[] words = new string[] { "a", "b", "c" };
string csv = words.Aggregate("", (acc, w) => acc == "" ? w : acc + "," + w);
Console.WriteLine(csv); // a,b,c
}
}
Anonim tür izdüşümü
Düzenli izdüşümler için anonim türleri kullanın: new { Name = c.Name, ... } veya kısa biçimiyle new { c.Name }.
using System;
using System.Linq;
public sealed class City { public string Name; public int Pop; public City(string n,int p){ Name=n; Pop=p; } }
public class Program
{
public static void Main(string[] args)
{
var cities = new City[]
{
new City("Oslo", 634000),
new City("Rome", 2873000),
new City("Riga", 605000)
};
var small = cities
.Where(c => c.Pop < 1000000)
.Select(c => new { c.Name, Millions = (c.Pop / 1000000.0) });
foreach (var x in small)
{
Console.WriteLine(x.Name + " ~ " + x.Millions + "M");
}
}
}
Uygulama ipuçları
İpuçları:
- GroupBy işleminden sonra önce gruplar, ardından öğeler üzerinde yineleme yapın.
- Eşleşen anahtarlara sahip iki kaynağınız olduğunda Join kullanın.
- Aggregate için anlamlı bir başlangıç değeri seçin.
- Anonim türler yereldir; herkese açık API'lerden somut DTO'lar döndürün.
GroupBy amacı
Özet
Özet: Gruplar oluşturmak için GroupBy, kaynakları birleştirmek için Join, indirgemek için Aggregate, düzenli izdüşümler için de anonim türleri kullanın.
Sıkça Sorulan Sorular
“GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)” dersi ücretsiz mi?
Evet — “GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)” 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 3 dersten oluşur.
“GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)” dersinde ne öğreneceğim?
Ögeleri gruplayın, dizileri birleştirin, Aggregate ile azaltın ve anonim türleri kullanarak temiz sonuçlar üretin. 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, 3 dersinin 1. dersidir.
“GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)” 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
- GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)
- Somutlaştırma (ToList, ToDictionary) ve performans notları
- Birleştirilebilirlik ipuçları